私は Django を初めて使用し、このクエリを構築しようとして頭を悩ませています。
- OneToOneフィールドでUserに接続されたBaseProfileがあります。
- OneToOneフィールドに接続されたCustomerProfileのプロファイルをBaseProfileに特化しています。
- CustomerProfileは、RelatedCustomerモデルを通じて、他のCustomerProfile (つまりそれ自体)とのManyToMany関係を持ちます。
- RelatedCustomerで、from_customerおよびto_customer 外部キーを指定します。
画像があるとよくわかるかもしれません。
私の問題:
user.id が与えられた場合、彼が接続している顧客の他のすべての user.id を知る必要があります( from_customerと to_customerを通過します):
したがって、基本的には、最初に逆ルックアップを使用して User から RelatedCustomer まで掘り下げ、すべてのセットを取得してから、セット内の各顧客 の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()
前の 2 つの連鎖: user.idを指定して、CustomerRelated リレーションのクエリセットを取得します。
rel = CustomerProfile.objects.get(base_profile__user=2).from_photographer.all()
これにより、次のようなものが返されます。
[<CustomerRelated: from TestCustomer4 to TestCustomer2 >,
<CustomerRelated: from TestCustomer4 to TestCustomer3 >]
この場合、user.id=2を持つユーザーはTestCustomer4です。
私の質問:
ここまでは順調ですが、これを設定して to_customer のすべての user.id を取得するにはどうすればよいですか?
つまり、とのuser.idを取得するにはどうすればよいですか?TestCustomer2
TestCustomer3