使用 Django-Taggit 过滤:是否可以过滤包含所有标签的模型条目?



代码:

Food.objects.filter(tags__name__in=["Tag 1","Tag 2","Tag 3"]).distinct()

更准确地说,如果我想过滤食物至少具有所有三个标签(不仅仅是三个中的一个或两个,但可能有多个三个(的食物,是否对文档中提供的过滤器进行了修改以实现此结果?

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

尝试:

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()

最新更新