我有这些模型:django的:更复杂的过滤器
类A(模型): 通
类B(模型): 一个= ForeignKey的(A)
C类(型号): b = ForeignKey(B)
我有一个名为mya的实例。
我想找到所有的B对我的A,对于其中有至少一个C.我可以在一行做到这一点:
bsiwant = [CB在C.objects.filter C(b__a = = mya)](并以某种方式将其唯一标识)
...但想必会导致很多查询。有没有办法通过过滤器来完成单个查询?
我有这些模型:django的:更复杂的过滤器
类A(模型): 通
类B(模型): 一个= ForeignKey的(A)
C类(型号): b = ForeignKey(B)
我有一个名为mya的实例。
我想找到所有的B对我的A,对于其中有至少一个C.我可以在一行做到这一点:
bsiwant = [CB在C.objects.filter C(b__a = = mya)](并以某种方式将其唯一标识)
...但想必会导致很多查询。有没有办法通过过滤器来完成单个查询?
其实,这应该这样做:
B.objects.filter(a=mya, c__b__isnull=False)
或
B.objects.filter(a=mya, c__b=F('id'))
vals = C.objects.filter(b__a=mya).select_related("b").distinct()
bsiwant = [c.b for c in vals]
应该做它在一个单一的查询。