Как найти сумму из таблицы с внешним ключом вместе с некоторой фильтрацией в django orm?

class UserAndQuiz(models.Model):
    user = models.ForeignKey(User,on_delete=models.CASCADE)
    quiz = models.ForeignKey(QuizInfo,on_delete=models.CASCADE)
    created_at = models.DateTimeField(null=True,blank=True)
    is_submit = models.BooleanField(default=False)
    result = models.IntegerField(default=0)

class QuizInfo(models.Model):
    quiz_name = models.CharField(unique=True,max_length=255)
    number_of_question = models.IntegerField()
    number_of_option = models.IntegerField()
    quiz_type = models.CharField(max_length=255,choices=quiz_status)
    price = models.FloatField(default=0.0,null=True,blank=True)
    image = models.ImageField(upload_to='pics')
    description = models.TextField()
    def __str__(self) -> str:
        return self.quiz_name

Соответствующий SQL запрос = SELECT sum(price) from quizsession_quizinfo as q JOIN user_userandquiz as p on q.id = p.quiz_id where p.is_submit=1;

какова ФОРМА этого запроса?

Если я правильно понимаю SQL: Мы пытаемся получить общую цену всех представленных запросов

Я считаю, что вы должны использовать агрегат и сделать что-то вроде этого:

from django.db.models import Sum

aggrDict = UserAndQuiz.objects.filter(is_submit=True).aggregate(total_price=Sum('quiz__price'))
print(aggrDict) # {'total_price': float}
Вернуться на верх