Django. Аннотируйте кверисет для получения количества связей с другой моделью

У меня есть модели Question, Answer, Form и FormAnswer.

модели были упрощены для сокращения времени чтения

class Question(models.Model):
    text = models.CharField(max_length=255)


class Answer(models.Model):
    question = models.ForeignKey(Question, models.CASCADE)
    text = models.CharField(max_length=255)


class Form(models.Model):
    user = models.ForeignKey(CustomUser, models.CASCADE)


class FormAnswer(models.Model):
    form = models.ForeignKey(Form, models.CASCADE)
    question = models.ForeignKey(Question, models.CASCADE)
    answer = models.ForeignKey(Answer, models.CASCADE)

Я бы хотел иметь возможность аннотировать статистику следующим образом:

Form.stats -> {
    1: { # Question.pk
        2: 5 # Answer.pk: how much times this question 
             # was answered with this answer via FormAnswer model
        3: 11, 
        4: 1,
    },
    2: {
        5: 1,
        6: 2,
        7: 9,
    },
}

Альтернативные варианты SQL также были бы полезны

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