テスト結果を処理する Django アプリがあり、特定の評価の中央値を見つけようとしています。私はこれがうまくいくと思います:
e = Exam.objects.all()
total = e.count()
median = int(round(total / 2))
median_exam = Exam.objects.filter(assessment=assessment.id).order_by('score')[median:1]
median_score = median_exam.score
しかし、常に空のリストを返します。私はこれで私が望む結果を得ることができます:
e = Exam.objects.all()
total = e.count()
median = int(round(total / 2))
exams = Exam.objects.filter(assessment=assessment.id).order_by('score')
median_score = median_exam[median].score
一連の試験全体を照会する必要はありません。次のような生のMySQLクエリを書くことを考えました:
SELECT score FROM assess_exam WHERE assessment_id = 5 ORDER BY score LIMIT 690,1
しかし、可能であれば、Django の ORM 内にとどまりたいと思っています。ほとんどの場合、フィルターと制限を指定して order_by を使用できないように見えるのは、私を悩ませているだけです。何か案は?