我正在使用django-taggit进行标记。
class Taggedwebsites(TaggedItemBase):
content_object = models.ForeignKey('website')
class website(models.Model):
tags=TaggableManager(through=Taggedwebsites,blank=True)
现在我想要所有网站的标签都是动态提供的标签列表的超集。
例如,
tag_list=['python','django','database']
然后我想要所有必须至少具有这三组的网站对象。
result=website.objects.filter(tags__name_on=tag_list).distinct()
不起作用,因为它没有给出其标签是tag_list的超集的对象。
如何在过滤器中执行此查询?
答案 0 :(得分:0)
在查询" tags__name_on" ' on'在django中没有定义单词,你应该使用in。您希望对象包含至少必须包含这三个对象的对象,您应该使用' in'参数。以下是查询集的文档:docs.djangoproject.com/en/1.8/ref/models/querysets/#in
尝试:
result=website.objects.filter(tags__name__in=tag_list).distinct()
或:
result=website.objects.distinct(tags__name__in=tag_list)