我是Django中的新成員,我正在給自己一個試圖構造此查詢的大頭盔。在Django中使用通過多對多關係進行查詢
- 我有一個BaseProfile與OneToOne字段連接到用戶。
- 我專業的個人資料CustomerProfile與OneToOne場連接到BaseProfile。
- 甲CustomerProfile與其他CustomerProfile(因此本身)通過一個RelatedCustomer模型多對多關係。
- 在RelatedCustomer我指定的from_customer和to_customer外鍵。
也許你可以更好地理解圖像。
我的問題:
給定一個user.id我需要知道的客戶,他連接到(所以通過from_customer的所有其他user.id和to_customer):
所以基本上,首先我需要挖掘從用戶到相關客戶使用反向查找,完成所有設置,然後再回頭瞭解該集合中每個客戶的user.id。
EDIT2:
我到目前爲止已經達到了:
# This gives me back a customer profile given a user.id (2)
cm = CustomerProfile.objects.get(base_profile__user=2)
# M2M lookup. Given one customer returns all the RelatedCustomer relations
# that he has as a part of the 'from' M2M
cm.from_photographer.all()
鏈接前兩個:給定一個user.id我獲得查詢集 CustomerRelated關係:
rel = CustomerProfile.objects.get(base_profile__user=2).from_photographer.all()
這給了我b凡在這種情況下,用戶具有user.id = 2是TestCustomer4
[<CustomerRelated: from TestCustomer4 to TestCustomer2 >,
<CustomerRelated: from TestCustomer4 to TestCustomer3 >]
:ACK類似。
我的問題:
到目前爲止好,但現在有這個設置我怎樣才能得到所有user.id的to_customer的?
也就是說,如何獲取user.id的TestCustomer2
和TestCustomer3
?
請檢查是否該爲你工作。 –
@GamesBrainiac感謝您的回答。我已經使用了你的鏈接和建議,但我仍然沒有明白。我編輯了我的問題,添加了與我需要執行的操作相同的SQL。 – Leonardo
看看你是否可以用原始SQL做到這一點。我會嘗試在django ORM中給你解決方案,但即使是我的ORM技能也不是那麼好。 –