python – 关于APIView的django过滤器

python – 关于APIView的django过滤器,第1张

概述我有一个APIView类显示所有的租金和发布和删除等.现在我想要搜索功能,所以我试图使用DjangoFilterBackend,但它无法正常工作.我在文档中看到它已经与ListAPIView一起使用但是我如何在APIView中使用它. class Rent(APIView): """ List all the rents if token is not provided else 我有一个APIVIEw类显示所有的租金和发布和删除等.现在我想要搜索功能,所以我试图使用DjangoFilterBackend,但它无法正常工作.我在文档中看到它已经与ListAPIVIEw一起使用但是我如何在APIVIEw中使用它.

class Rent(APIVIEw):    """    List all the rents if token is not provIDed else a token specific rent    """    serializer_class = RentSerializer    filter_backends = (DjangoFilterBackend,)    filter_fIElds = ('city','place','property_category',)    search_fIElds = ('=city','=place')    def get(self,request,token=None,format=None):        reply={}        try:            rents = Rental.objects.all()            if token:                rent = Rental.objects.get(token=token)                reply['data'] = self.serializer_class(rent).data            else:                reply['data'] = self.serializer_class(rents,many=True).data        except Rental.DoesNotExist:            return error.RequestedResourceNotFound().as_response()        except:            return error.UnkNownError().as_response()        else:            return Response(reply,status.http_200_OK)

当我在网址中使用以下参数搜索租金时,我得到所有的租金,而我应该只获得位于加德满都市的租金并放置koteshwor

http://localhost:8000/api/v1/rents?city=Kathmandu&place=Koteshwor

解决方法 这里如果您正在使用API​​VIEw,那么与过滤器无关.所以你必须这样做

get_data = request.query_params #or request.GET check both

然后

Rental.objects.filter(city=get_data['city'],place=get_data['place'])
总结

以上是内存溢出为你收集整理的python – 关于APIView的django过滤器全部内容,希望文章能够帮你解决python – 关于APIView的django过滤器所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1194377.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存