2017-07-08 4 views
1

Food.objects.filter(tags__name__in = ["タグ1"、 "タグ2"、 "タグ3"))distinct()Django-Taggitによるフィルタリング:すべてのタグを含むモデルエントリをフィルタリングできますか?

もっと正確には、私がFood(s) (3つのうち1つまたは2つだけではなく、3つ以上のタグを持つことができる)、この結果を達成するドキュメントに提供されているフィルタを変更していますか?

http://django-taggit.readthedocs.io/en/latest/api.html

答えて

0

試してみてください。

tag_list = ["Tag 1","Tag 2","Tag 3"] 

一つの方法は、連鎖的に複数のフィルタを使用することです。この

Food.objects.filter(tags__name=tag_list[0]).filter(tags__name=tag_list[1]).filter(tags__name=tag_list[3]).distinct() 

のような別の方法は、応答するためannotation approach

Food.objects.filter(tags__name__in=tag_list).annotate(num_tags=Count('tags')).filter(num_tags__gte=len(tag_list)).distinct() 
+0

感謝を使用することです。私はちょうど "連鎖的な方法で複数のフィルタ"アプローチを試み、基数10でint()のValueError "無効なリテラルを得ました: 'Tag 1'" ...私は間違って何をしているかもしれないの考えですか? – Peter

+0

@Peter今すぐお試しください。私は私の答えを編集しました – badiya

+0

ありがとう!完璧に働いた。 – Peter

関連する問題