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 школ, ученики которых дали больше всего правильных ответов, с их процентом в порядке убывания. Как я могу написать запрос для этого?

Вернуться на верх