J'ai donc une application Django qui traite les résultats des tests, et j'essaie de trouver le score médian pour une certaine évaluation. Je pense que cela fonctionnerait:Filtre Django QuerySet + 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
Mais il retourne toujours une liste vide. Je peux obtenir le résultat que je veux avec ceci:
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
Je voudrais juste préférerais ne pas avoir à interroger l'ensemble des examens. Je pensais juste écrire une requête MySQL première qui ressemble à quelque chose comme:
SELECT score FROM assess_exam WHERE assessment_id = 5 ORDER BY score LIMIT 690,1
Mais si possible, je voudrais rester dans l'ORM de Django. La plupart du temps, cela me dérange que je n'arrive pas à utiliser order_by avec un filtre et une limite. Des idées?
Merci, j'obtenais la syntaxe de tranche mélangée avec la syntaxe limite MySQL – bjudson