2017-08-09 8 views
0

Django rest frameworkで書かれた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') 

しかし、私はModelviewset内部def list(self, request, *args, **kwargs):をオーバーライドする場合は、すべてのフィルタは動作を停止しています。

もう一度すべてのフィルタを有効にする方法はありますか?

ありがとうございます。

+0

オーバーライドコードを表示 –

答えて

2

このfilter_querysetメソッドを使用してクエリーセットを手動でフィルタリングする必要があります。したがって、この行をリストメソッドに追加してください。

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

ありがとうございました。 –

関連する問題