在Django中加入查询多对多的关系

时间:2012-10-17 00:10:43

标签: django django-models many-to-many django-queryset

我的models.py

中有以下课程
class Story(models.Model):
    title = models.CharField(max_length=60)
    creator = models.ManyToManyField(User, blank=True)

我正在尝试使用2个创建者名称返回QuerySet。

例如,我如何过滤具有创作者的故事:用户1 obj和用户2 obj?

我已阅读多对多关系文档但找不到任何内容。我达成的最接近的解决方案是......

Story.objects.filter(creator__in=[1,2]).distinct() 

但它不会对1和2进行联合查询,只需1 OR 2.

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:1)

你需要我们一个Q对象。我会尝试这样的事情:

from django.db.models import Q

Story.objects.filter(Q(creator=1) | Q(creator=2))

答案 1 :(得分:0)

您可以使用Q对象:

https://docs.djangoproject.com/en/1.4/topics/db/queries/#complex-lookups-with-q-objects

以下内容应该符合您的要求:

Story.objects.filter(Q(creator=1), Q(creator=2))