Tengo una aplicación Django que procesa los resultados de las pruebas, y estoy tratando de encontrar la puntuación mediana para una determinada evaluación. Creo que esto funcionaría: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
Pero siempre devuelve una lista vacía. Puedo conseguir el resultado que quiero con esto:
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
acabo preferiría no tener que consultar todo el conjunto de exámenes. Pensé en sólo escribir una consulta prima MySQL que se ve algo como:
SELECT score FROM assess_exam WHERE assessment_id = 5 ORDER BY score LIMIT 690,1
Pero si es posible, me gustaría permanecer dentro de ORM de Django. En general, me molesta que parezca que no puedo usar order_by con un filtro y un límite. ¿Algunas ideas?
Gracias, estaba obteniendo la sintaxis de slice mezclada con la sintaxis de límite de MySQL – bjudson