Django ORM - ForeignKey 涉及 3 个模型

Django ORM - ForeignKey with 3 models involved

我有以下型号:

class A(models.Model):
    ...

class B(models.Model):
    a = models.ForeignKey(A)
    c = models.ForeignKey(C, null=True, blank=True)

class C(models.Model):
    ...

我想获得所有具有任何 B、具有任何 C = null 的 A。 我试过

A.objects.filter(b__c__isnull=True) 

但这显然无法获取正确的结果。

我是不是漏掉了什么?

如果你的问题是没有任何 B 的 A 来了,你可以试试

A.objects.filter(b__isnull=False, b__c__isnull=True).distinct()

这里需要先进行反向查询

b_with_c_null = b.objects.filter(c__is_null=True).all()
a_with_any_b_with_c_null = b_with_c_null.a_set.all() 

尝试使用 a.b_set.filter(c__isnull=True) ,首先我们请求模型 A,然后我们请求 A 中的对象 B 但使用 c == Null

过滤