Как вывести записи об оплате обучения студентов на шаблон в django

У меня есть несколько моделей для оплаты студенческих взносов, и я хотел бы вывести следующее на основе этих моделей:

Классы, Количество учеников в каждом классе, Сумма к оплате в каждом классе, & Общая сумма, выплаченная в каждом классе

Мои модели приведены ниже: для настройки класса

class ClassArmSetup(models.Model):

SECTION = (
    ('Primary', 'Primary'),
    ('Secondary', 'Secondary'),
    ('Creche', 'Creche'),
    ('Nursery', 'Nursery'),
)
id = models.AutoField(primary_key='True')
name = models.CharField(max_length=255, unique=True)
short_name = models.CharField(
    'Classroom Short Form',
    max_length=20, blank=True
)
academic_year = models.ForeignKey(AcademicYear, on_delete=models.CASCADE, null=True)
term = models.ForeignKey(TermSetup, on_delete=models.CASCADE, null=True)
created_at = models.DateTimeField(auto_now_add=True, null=True)
updated_at = models.DateTimeField(auto_now=True, null=True)

objects = models.Manager()

def classroom_code(self):
    if not self.code:
        return ""
    return self.code

class StudentClassRegistration(models.Model):

STATUS = [
    ('Active', 'Active'),
    ('Withdrawn', 'Withdrawn'),
    ('Completed', 'Completed'),
]
chosen_class = models.ForeignKey(
    ClassArmSetup, related_name='admission_students',
    on_delete=models.CASCADE,
    blank=True, null=True
)


admitted = models.BooleanField(default=False)
admission_date = models.DateField(blank=True, null=True)
migration_status = models.CharField(
    max_length=255,
    blank=True, null=True, default='Active'
)
status = models.TextField(choices=STATUS, verbose_name='Status', null=True)
rejected = models.BooleanField(default=False)
assigned_as_student = models.BooleanField(default=False)
academic_year =models.ForeignKey(AcademicYear, on_delete=models.CASCADE, null=True, verbose_name='Session')
term =models.ForeignKey(TermSetup, on_delete=models.CASCADE, null=True, verbose_name='Term')
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)

def __str__(self):
    return str(self.lastname) + ' ' + str(self.firstname) + ' ' + str(self.othername)

class Meta:
    ordering = ['chosen_class']

class TuitionFeesSetup(models.Model):

year= models.ForeignKey(AcademicYear, on_delete=models.CASCADE, null=True, verbose_name="Session")
term= models.ForeignKey(TermSetup, on_delete=models.CASCADE, null=True, verbose_name="Term")
classroom= models.ForeignKey(ClassArmSetup, on_delete=models.CASCADE, null=True, verbose_name="Class", related_name='class_fee_setup')
amount=models.IntegerField(null=True, verbose_name="Tuition Fees Amount(N)")
created = models.DateTimeField(auto_now_add=True, null=True)
updated = models.DateTimeField(auto_now=True, null=True)
    
objects = models.Manager()

class Meta:
    verbose_name = ('Fees Setup Payment')
    verbose_name_plural = ('Fees Setup')

def __str__(self):
    return str(self.amount)

class TuitionFeesPayment(models.Model):

PAYMENT_METHOD = (
    ('Cash', 'Cash'),
    ('Bank', 'Bank'),
    ('Cheque', 'Cheque'),
    ('Scholarship', 'Scholarship'),
    ('Discount', 'Discount'),
    ('Bad Debt', 'Bad Debt')
)

year= models.ForeignKey(AcademicYear, on_delete=models.CASCADE, null=True, verbose_name="Session")
term= models.ForeignKey(TermSetup, on_delete=models.CASCADE, null=True, verbose_name="Term")
classroom= models.ForeignKey(ClassArmSetup, on_delete=models.CASCADE, null=True, verbose_name="Class", related_name='class_pay')
student= models.ForeignKey(StudentClassRegistration, on_delete=models.CASCADE, null=True, verbose_name="Student", related_name='student_pay')
class_fee= models.ForeignKey(TuitionFeesSetup, on_delete=models.CASCADE, null=True, verbose_name="Tuition Fee")
amount_paid=models.IntegerField(verbose_name="Amount(N) Paid", null=True, blank=True)
payment_method=models.CharField(choices=PAYMENT_METHOD, blank=True, max_length=50, verbose_name="Payment Method")
receipt_reference=models.CharField(max_length=255, null=True, verbose_name="Receipt Reference", editable=False, unique=True, default= random_string)
payment_date = models.DateField(null=True, default="2022-04-08")
created = models.DateTimeField(auto_now_add=True, null=True)
updated = models.DateTimeField(auto_now=True, null=True)
    
objects = models.Manager()

class Meta:
    verbose_name = ('Fees Setup Payment')
    verbose_name_plural = ('Fees Setup Payments')

Что я хочу сделать, так это вывести информацию следующим образом в шаблоне:

Каждый класс
Количество учащихся в каждом классе
Тарифы, установленные для каждого класса
Общая сумма, ожидаемая от каждого класса
Общая сумма, полученная от каждого класса

Заранее спасибо

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