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
过滤
我有以下型号:
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