[英]Django: How to get related objects of a queryset?
假設我有兩個模型:
A:
pass
B:
a = foreign_key(A)
現在,我有一個查詢集
bs = B.objects.filter(...)
我想所有的a
的bs
,這意味着每a
該被引用b
為其b
是bs
。
有沒有辦法這樣做? 我認為在sql中,一個簡單的join就可以了,我不知道django是否支持這個。
您可以使用__in
:
A.objects.filter(b__in=bs)
或者您可以完全避免創建 bs 查詢集,並直接在查詢中遵循關系:
A.objects.filter(b__<bcondition>=<bvalue>)
例如,如果用於創建bs
的過濾器是:
bs = B.objects.filter(name="Banana")
然后您可以使用以下方法過濾A
對象:
A.objects.filter(b__name="Banana")
請記住,您可以通過多種不同的方式進行過濾,並且過濾器功能非常廣泛,因此值得查看過濾器文檔
擴展 Daniel 的解決方案,如果使用相關模型,則使用__in
可能會返回重復記錄。
例如:
A.objects.filter(b__in=bs).count()
可能大於A.objects.all().count()
對我來說,使用distinct()
像這個SO answer 中提到的那樣工作
A.objects.filter(b__in=bs).distinct()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.