我有这些模特:
A类(型号): 通
B级(型号): a = ForeignKey(A)
C类(型号): b = ForeignKey(B)
我有一个名为mya的A实例。
我想为我的A找到所有B,其中至少有一个C.我可以在一行中完成:
bsiwant = [c.b for c in C.objects.filter(b__a == mya)](并以某种方式将其统一)
...但可能会导致许多疑问。有没有办法使用过滤器来执行单个查询?
答案 0 :(得分:1)
实际上,应该这样做:
B.objects.filter(a=mya, c__b__isnull=False)
或
B.objects.filter(a=mya, c__b=F('id'))
答案 1 :(得分:1)
vals = C.objects.filter(b__a=mya).select_related("b").distinct()
bsiwant = [c.b for c in vals]
应该在一个查询中完成。