簡體   English   中英

Django:如何獲取查詢集的相關對象?

[英]Django: How to get related objects of a queryset?

假設我有兩個模型:

A:
    pass

B:
    a = foreign_key(A)

現在,我有一個查詢集

bs = B.objects.filter(...)

我想所有的abs ,這意味着每a該被引用b為其bbs

有沒有辦法這樣做? 我認為在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM