检索具有多个指定标签的文章(m2m到文章)

时间:2018-07-26 11:25:27

标签: django

我有一个文章模型,该模型与模型Tag共享ManyToMany关系,

我想检索具有多个标签的文章

对于一个标签:

In [162]: articles = Article.objects.filter(tags__name="python")
Out[162]: <QuerySet [<Tag: python>, <Tag: django>

对于我尝试过的多个标签

In [168]: articles = Article.objects.filter(tags__name="python", tags__name="django", tags__name="queryset")

它报告了错误:

SyntaxError: keyword argument repeated

如何获得具有指定标签的文章。

2 个答案:

答案 0 :(得分:3)

您可以使用__in查找:

articles = Article.objects.filter(tags__name__in=["python", "django", "queryset"])

答案 1 :(得分:1)

使用Q个对象:

from django.db.models import Q

Article.objects.filter(Q(tags='python') | Q(tags='django') | Q(tags='queryset'))

这大致翻译为:

"SELECT * FROM Article WHERE tags='python' OR tags='django' OR tags='queryset'"