代码:
Food.objects.filter(tags__name__in=["Tag 1","Tag 2","Tag 3"]).distinct()
更确切地说,如果我想过滤食物中至少有三个标签的食物(不仅仅是三个中的一个或两个,但可能有三个以上),是否有修改在文档中提供的过滤器,以实现此结果?
答案 0 :(得分: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()