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

最新更新