2017-08-09 72 views
0

我正在编写用Django rest框架编写的API。我在ModelViewSet中添加了搜索过滤器和订购过滤器,并且工作正常。当def list()被添加到模型视图集时,Django rest框架过滤器和搜索不工作

class bookviewset(ModelViewSet): 

    queryset = Book.objects.all() 
    serializer_class = book_serializer 
    filter_class = bookfilter 
    filter_backends = (django_filters.rest_framework.DjangoFilterBackend,filters.OrderingFilter,filters.SearchFilter) 
    ordering_fields = ('created_at', 'id','price_ids__price',) 
    search_fields = ('name', 'description', 'tag_ids__tag_name', 'category_ids__category') 

但是,当我重写def list(self, request, *args, **kwargs):里面Modelviewset,所有的过滤器已经停止工作。

有没有办法再次启用所有的过滤器?

谢谢。

+0

显示您的覆盖代码 –

回答

2

您必须使用此filter_queryset方法手动筛选查询集。因此,将此行添加到您的列表方法中。

def list(self, request, *args, **kwargs): 
    # fetch qs 
    qs = self.filter_queryset(qs) 
    # etc 
+0

非常感谢你..它的工作..! –