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')