我有以下型号:
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的A,有任何C = null。 我试过做
A.objects.filter(b__c__isnull=True)
但显然没有取得正确的结果。
我错过了什么吗?
答案 0 :(得分:1)
尝试使用a.b_set.filter(c__isnull=True)
,首先我们要求模型A,然后我们要求A中的对象B但是使用c == Null过滤
答案 1 :(得分:0)
如果您的问题是没有任何B的A来了,您可以试试吗
A.objects.filter(b__isnull=False, b__c__isnull=True).distinct()
答案 2 :(得分:0)
你需要先在这里进行反向查找
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()