我有一个文章模型,该模型与模型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
如何获得具有指定标签的文章。
答案 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'"