如果给定了query_params,我希望返回model_info,否则应该给出一些错误提示信息。
我尝试了以下代码,但是当在查询参数中未传递名称时,它会给我抛出keyerror错误。
from rest_framework.validators import ValidationError
class ModelSerializer(serializers.ModelSerializer):
class Meta:
model = ModelName
fields = ('name', 'abbreviation')
def validate_name(self, value):
if value:
return value
else:
raise ValidationError('Enter name')
class ModelNameListList(generics.ListCreateAPIView):
renderer_classes = (JSONRenderer, )
serializer_class = ModelSerializer
def get_queryset(self):
queryset = ModelName.objects.all()
name = self.request.query_params['name']
queryset = queryset.filter(Q(name__icontains=name) | Q(abbreviation__icontains=name)).all()
return queryset
由于我也在使用分页,所以无法使用get方法。如果我使用get方法,它会返回所有结果。
当我在get_queryset中使用下面的代码时,我会得到“响应对象没有长度”的错误提示。
def get_queryset(self):
queryset = ModelName.objects.all()
name = self.request.query_params.get('name', None)
if name:
queryset = queryset.filter(Q(name__icontains=name) | Q(abbreviation__icontains=name)).all()
else:
content = {'errors': 'name is missing'}
return Response(content)
return queryset
exceptions.ValidationError
-- 根据文档,ParseError
是用于解析错误的,而ValidationError
则是用于格式正确但未通过验证的数据。 - connorbode