Django rest framework 在drf中使用django过滤器覆盖列表方法
我正在使用django过滤器过滤drf中的视图集 当我有一个ModelViewset时,它可以很好地工作,如下面的示例所示: 类MyExampleViewSetviewsets.ModelViewSet: queryset=myqueryset 模型=模型示例 filter\u backends=DjangoFilterBackend,OrderingFilter, filterset_字段={ 字段\示例:[精确,icontains], 另一个字段示例:[精确,范围], } 序列化程序_class=MyExampleViewSet 我的问题是当我使用ViewSet重写list方法时,如下所示: 类MyExampleViewSetviewsets.ViewSet: def listself,request,queryset=queryset,*args,**kwargs: 归还某物 在这种情况下,我的过滤器不工作。在这种情况下,有没有办法使用django过滤器覆盖列表Django rest framework 在drf中使用django过滤器覆盖列表方法,django-rest-framework,django-filter,Django Rest Framework,Django Filter,我正在使用django过滤器过滤drf中的视图集 当我有一个ModelViewset时,它可以很好地工作,如下面的示例所示: 类MyExampleViewSetviewsets.ModelViewSet: queryset=myqueryset 模型=模型示例 filter\u backends=DjangoFilterBackend,OrderingFilter, filterset_字段={ 字段\示例:[精确,icontains], 另一个字段示例:[精确,范围], } 序列化程序_cla
我知道我可以用query_参数做什么,但我想使用django filter。首先,您应该看看list方法是如何实现的:
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
page = self.paginate_queryset(queryset)
if page is not None:
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)
Django过滤器在此点应用queryset=self.filter\u querysetself.get\u queryset
因此,如果要覆盖列表方法但保留筛选功能,请确保使用queryset调用self.filter\u queryset。首先,您应该了解列表方法是如何实现的:
def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
page = self.paginate_queryset(queryset)
if page is not None:
serializer = self.get_serializer(page, many=True)
return self.get_paginated_response(serializer.data)
serializer = self.get_serializer(queryset, many=True)
return Response(serializer.data)
Django过滤器在此点应用queryset=self.filter\u querysetself.get\u queryset
因此,如果要覆盖list方法,但保留过滤功能,请确保使用queryset调用self.filter\u queryset