2017-07-21 10 views
0

私はdjango-rest-frameworkとdjango-filterを使ってフィルタリングを実装しています。 結果、次のしているのは、私が言ってみましょう:toylist配列が空の場合django-filterでmany-to-manyリストが空であるかどうかをチェックする方法?

{ 
    "id": 13, 
    "created": "2017-06-21T01:08:49.790254Z", 
    "updated": "2017-07-21T10:25:51.706730Z", 
    "toylist": [], 
} 

どのように私はフィルタリングを実装するのですが私は確認できますか?例えば、何かのように:

class ToysFilter(filters.FilterSet): 
    toylist__isnull = filters.BooleanFilter(name='toylist', method='list_is_empty') 

class Meta: 
    model = Toys 
    fields = { 
     'id':['exact'], 
     'created':'__all__', 
     'updated':'__all__', 
    } 

def list_is_empty(self, qs, name, value): 
    isnull = not value 
    lookup_expr = LOOKUP_SEP.join([name, 'isnull']) 

    return qs.filter(**{lookup_expr: isnull}).distinct() 
+0

現在のビュー/ビューセットクラスを投稿できますか? –

+0

はい、ここにある: クラスToysViewSet(viewsets.ModelViewSet):。 permission_classes = [permissions.IsAuthenticated] \tクエリセット= Toys.objects.all()ORDER_BY( ' - 作成した') \t serializer_class = ToysSerializer \t filter_class = ToysFilter – okarimov

+0

そして 'ToysFilter'クラスはフィルタリングを扱っているためです –

答えて

0

OK、これは比較的簡単な修正でした。もっと簡単に次のようにすることができます:

class ToysFilter(filters.FilterSet): 
    toylist__isnull = filters.BooleanFilter(name='toylist', lookup_expr='isnull', distinct=True) 
0

ここにメソッドを使用する必要はありません。/toys/?toylist__isnull=True

関連する問題