私は私のアプリに設定し、次のモデルがあります:学生Django - 多対多の関係で中間モデルからデータを取得するにはどうすればよいですか?
- レッスン
- を
- 評価
レッスンと学生モデルが評価による多対多の関係を持っています。評価モデルでは、レッスンに受け取った手数料も保存します。私はレッスンモデルでこれを実際に保管してから、生徒数を掛けなければならないが、何らかの理由で生徒がレッスンの全額を払っていない可能性があるので、個別に追跡する必要がある。
私は与えられた時間内にすべてのレッスンの一覧を作成しようと合計金額は合計金額がですべてのレッスンのために受信レッスン
- を表示する列が含まれていますその期間。現時点で
def total_fee(self):
evaluations = self.evaluation_set.all()
total = 0;
for e in evaluations:
total += e.fee_paid
return total
は、しかし、私は」を私はそれを実行したときに、このビューが87の別個のSQLクエリを必要とすることを示しています!
明らかに、私は毎回それを行うことはできません。どのようにして一度にすべてのデータを取得できますか?
アドバイスをいただければ幸いです。
ありがとうございました。
ありがとうございます、おそらく、これはすべての合計を与えるでしょうか?個々の行にも使用できますか?個々の行の – Dan
は注釈機能を見ます。 [django-annotations]( – mklauber
)これは、すべての指定されたクエリセットのすべての行の 'fee_paid'の列値。それは支払われたすべての手数料の合計になります。私は個々の行についてのあなたの質問にどういう意味があるのか分かりません。どのようにして1行を合計することができますか? :-) 行の別のサブセットで動作する可能性がある場合は、はい。また、これがあなたの質問に適切に答えると思うなら、それを回答としてマークし、私に投票を与えてください。それは感謝しています。ありがとう。 – jnadro52