gpt4 book ai didi

python - 在 Django Rest Framework 中验证 query_params

转载 作者:太空狗 更新时间:2023-10-29 20:30:24 26 4
gpt4 key购买 nike

我只想在给定 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

最佳答案

有了这个功能:

  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:
raise exceptions.ParseError("name not supplied")
return queryset

你应该确保你总是返回一个查询集(或者如果这是你想要处理它的方式则引发异常)。

关于python - 在 Django Rest Framework 中验证 query_params,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32668157/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com