Django - 使用子对象过滤查询集(外键)

Ale*_*dor 4 django django-queryset

我有 3 个模型,其中 2 个对应于第一个。

class Parent(models.Model):
    name = models.CharField....
    ...

class Child1(models.Model):
   parent = models.ForeignKey(Parent)
   ...

class Child2(models.Model):
   parent = models.ForeignKey(Parent)
   ...
Run Code Online (Sandbox Code Playgroud)

现在,在我看来,我有 2 个查询集过滤了Child1Child2对象。

有没有办法检索Parent过滤查询集中的所有对象?

就像是...

children1 = Child1.objects.filter(blah=blah)
children2 = Child2.objects.filter(blah=blah)
parents = Parent.objects.filter(self__in=children1 or self__in=children2)
Run Code Online (Sandbox Code Playgroud)

注意上面的代码根本不起作用,它只是一个想法。

Ane*_*pic 7

是的:

from django.db.models import Q

children1 = Child1.objects.filter(blah=blah)
children2 = Child2.objects.filter(blah=blah)
parents = Parent.objects.filter(Q(child1__in=children1) | Q(child2__in=children2))
Run Code Online (Sandbox Code Playgroud)

见文档: