如何在列表Django-taggit中获取其标签是标签子集的所有对象

时间:2015-07-06 16:35:05

标签: python django django-models django-taggit

我正在使用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的超集的对象。

如何在过滤器中执行此查询?

1 个答案:

答案 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)