Фильтрация с помощью Django-Taggit: возможно ли фильтровать записи модели, которые включают все теги?
Food.objects.filter(tags__name__in=["Tag 1","Tag 2","Tag 3"]). Different ()
Точнее, если я хочу фильтровать продукты, в которых продукты имеют по крайней мере все три тега (не один или два из трех, но могут иметь больше трех), есть ли модификация фильтра? предоставлено в документах, что достигает этого результата?
1 ответ
Пытаться:
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()
Другой способ заключается в использовании подхода аннотации
Food.objects.filter(tags__name__in=tag_list).annotate(num_tags=Count('tags')).filter(num_tags__gte=len(tag_list)).distinct()