我有這些模型: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]
應該做它在一個單一的查詢。