カスタムクエリセットのリストビューを使用してレコードのリストを表示しています。私が取得している列の1つが10進数のフィールドです。私は取得されたすべての行の列の合計値を取得したいと思います。Django - 総称リストビューの列の合計を取得
おそらく私はこれをListViewクラスのget_context_data内で行う必要がありますが、私はそれをどのように処理するかについてはわかりません。この メソッド内のクエリセットで計算を実行しようとすると、クエリが2回実行されることはありませんか?
私のクエリは私のモデルスキーマに完全に適合しておらず、計算を実行したいフィールドはそれ自体が行ごとに計算されます。
return Lesson.objects.select_related().filter(user=self.request.user).extra(select={'total_fee' : 'SELECT SUM(fee_paid) FROM lessons_evaluation WHERE lessons_evaluation.lesson_id=lessons_lesson.id GROUP BY lessons_evaluation.lesson_id', 'desc' : 'SELECT CASE WHEN COUNT(lessons_evaluation.id) = 0 THEN "None Set" WHEN COUNT(lessons_evaluation.id) = 1 THEN GROUP_CONCAT(CONCAT(lessons_student.first_name, " ", lessons_student.last_name)) ELSE CONCAT(COUNT(lessons_evaluation.id), " students") END FROM lessons_evaluation, lessons_student WHERE lessons_evaluation.lesson_id=lessons_lesson.id AND lessons_evaluation.student_id = lessons_student.id GROUP BY lessons_evaluation.lesson_id'})
EDIT:
レッスン仲介評価モデルによる学生twith多対多の関係を持っています。
アドバイスありがとうございます。
ありがとうございました。
こんにちは、私のクエリは少し複雑です(私は今質問に追加しました)、私が使用したい列は実際にモデルの一部ではありません。集計関数はどこに呼び出す必要がありますか?ありがとう。 – Dan
okですので、明確にしてください。モデルレッスン、評価、学生のレッスンというアプリがありますか? ** EDIT **およびevaluation.lessonとevaluation.studentに外部キーフィールドを使用していますか? – mklauber