Django ORM Запрос для отображения отложенных платежей

Пожалуйста, помогите мне. У меня есть следующие модели, в соответствии с которыми студент может записаться на курс, за который установлена плата. В рамках этой записи студент может делать частичные платежи. Я не могу создать запрос, который покажет мне список студентов с зачисленными курсами и общей суммой платежей, сделанных за этот курс.

class Course(models.Model):
    name = models.CharField(max_length=100)
    school = models.ForeignKey(School, on_delete=models.CASCADE)
    student_class =  models.IntegerField(verbose_name="Class", help_text="Class", choices= STUDENT_CLASS)    
    fee = models.IntegerField()
    created_on = models.DateField(auto_now_add=True)

class Enrollment(models.Model):
    student = models.ForeignKey(Student, on_delete=models.CASCADE)
    course = models.ForeignKey(Course, on_delete=models.CASCADE)
    created_on = models.DateField(auto_now_add=True)

class Payment(models.Model):
    PAYMENT_CHOICES = [
        ('CAS', 'Cash'),
        ('CHQ','Cheque'),
    ]

    enrollment = models.ForeignKey(Enrollment, on_delete=models.CASCADE)
    amount = models.IntegerField()
    mode = models.CharField(max_length=3, choices=PAYMENT_CHOICES)
    payment_date = models.DateField(auto_now_add=True)

Я не проверял это, логически это должно работать, но может быть небольшая неточность

student = Student.objects.get(id=1)
course = Course.objects.get(id=1)

paid_so_far = Payment.objects.filter(enrollment__student=student, enrollment__course=course).aggregate(Sum('amount'))['amount__sum']

if paid_so_far == course.fee:
    print('Course fully paid')


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