У меня есть приложение Django, которое обрабатывает результаты тестирования, и я пытаюсь найти средний балл для определенной оценки. Я бы подумал, что это сработает:Django QuerySet filter + order_by + limit
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
Но если это возможно, я хотел бы остаться в ОРМ Джанго. В основном, это просто беспокоит меня, что я не могу использовать order_by с фильтром и лимитом. Есть идеи?
Спасибо, я получил синтаксис фрагмента, смешанный с синтаксисом ограничения MySQL – bjudson