1

近いものがhereは、私が求めていたものと

は、私は次のモデルがあるとしていますprefetch_related別の内側prefetch_relatedテーブル:

players = Player.objects.prefetch_related('team') 

クエリーセットにstateを追加するにはどうすればよいですか?私の最終目標は、player.team.division.stateをテンプレートの中に入れることです。もう一つの方法はネストされたforループを使うことですが、私はそれを避けたいと思います。

+0

あなたのサンプルモデルは、名前とフィールドが非常に似ているため、理解しにくいです。他のモデルから 'model3'への外部キー/多対多フィールドは存在しないので、ここで' prefetch_related'を使う理由はありません。単純な 'select_related'が動作します。 – Alasdair

+0

@Alasdair私の編集を見てください – mjr

答えて

2

ここにprefetch_relatedは必要ありません。 PlayerTeamDivisionの外部キーの後には、select_related()を使用することができます。あなたはDivisionクエリセットを開始し、同時に関連するチームを取得したい場合

players = Player.objects.select_related('team__division') 

prefetch_relatedためのユースケースがあります。

+0

これは別の質問であるべきかどうか分かりませんが、チームにプレーヤーがいなくても1つのクエリーセットでチームと選手を得るにはどうすればいいですか? – mjr

+1

これは別の質問です。新しい質問をする前に、[プリフェッチ関連のドキュメント](https://docs.djangoproject.com/en/1.9/ref/models/querysets/#prefetch-related)を見てください。サンプルモデルは、あなたのモデルにかなり似ています。逆順の外部キーに関連するプリフェッチは、多対多のフィールドで使用するのと同じ方法で、チーム間で使用できます。 – Alasdair

+0

[プリフェッチオブジェクトのドキュメント](https://docs.djangoproject.com/en/dev/ref/models/querysets/#prefetch-objects)も非常に便利であることがわかりました。 – mjr

関連する問題