Group_by в django с полем внешнего ключа
У меня есть эта модель:
class Student(models.Model):
name = models.CharField(max_length=255)
school = models.CharField(max_length=255)
class Question(models.Model):
question_text = models.CharField(max_length=255)
correct_count = models.Integer_Field()
incorrect_count = models.Integer_Field()
class Answer(models.Model):
question = models.ForeignKey(Question, related_name='answer_question',
on_deleted=models.CASCADE)
text = models.CharField(max_length=255)
is_correct = models.BooleanField()
class Quiz(models.Model):
name = models.CharField(max_length=255)
month = models.DateField()
class QuizQuestion(models.Model):
quiz = models.ForeignKey(Quiz, related_name='quiz_question_quiz',
on_deleted=models.CASCADE)
questions = models.ManyToManyField(Question, related_name='quiz_student')
class QuizAnswer(models.Model):
student = models.ForeignKey(Student, related_name='quiz_answer_student',
on_deleted=models.CASCADE)
question = models.ForeignKey(Question, related_name='quiz_answer_question',
on_deleted=models.CASCADE)
answer = models.ForeignKey(Answer, related_name='quiz_answer_answer',
on_deleted=models.CASCADE)
quiz = models.ForeignKey(Quiz, related_name='quiz_answer_student',
on_deleted=models.CASCADE)
marks = models.IntegerField()
Это связано с конкурсом, в котором участвуют ученики из разных школ. В викторине будут вопросы с множественным выбором, и ученик выбирает один ответ, который хранится в нашей таблице QuizAnswer с идентификатором вопроса, идентификатором ответа, идентификатором пользователя, идентификатором викторины, и если ответ правильный, то счетчик correct_count нашей модели Question увеличивается, иначе счетчик incorrect увеличивается.
Теперь я хочу получить топ-5 школ, ученики которых дали больше всего правильных ответов, с их процентом в порядке убывания. Как я могу написать запрос для этого?