If i choose to go with your way of calculation, i would do this...

def student_detail(request, pk):
    student = Student.objects.get(id=pk)
    fees = student.fee_set.aggregate(total_paid_fees=Sum('paid_fees'), 
total_school_fees=Sum('school_fees'))

    balance_fees = fees["total_school_fees"] - fees["total_paid_fees"]

    context = {"student": student, 
"fees": fees, "balance_fees": balance_fees, }

    return render(request, "student_details.html", context)

Template e.g.
<body>
    <h1>Student Detail</h1>
    <p>Student name: {{ student.name }}</p>
    <p>School fees: {{ fees.total_school_fees }}</p>
    <p>Paid fees: {{ fees.total_paid_fees }}</p>
    <p>Remaining fees: {{ balance_fees }}</p>
</body>

Result:
Student Detail

Student name: student1

School fees: 100000.0

Paid fees: 25000.0

Remaining fees: 75000.0
I hope this helps!
On Thursday, September 10, 2020 at 2:16:27 PM UTC-4 [email protected] wrote:

> Thanks for helping me @coolguy,but it seems I ran into another problem, 
> the school fees and remaining fees somehow sums together, I want students 
> to pay school fees in phases, i.e, first quarter, second etc, and I want 
> remaining fee to be the difference between the initial school fees which is 
> 1000000 and total fee paid.
>
> Thanks in advance
>
>  
>
> My views.py for student
>
> Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986> for 
> Windows 10
>
>  
>
> *From: *coolguy
> *Sent: *Tuesday, September 8, 2020 11:58 PM
> *To: *Django users
> *Subject: *Re: Help me with the view please
>
>  
>
> I see now what you are asking...
>
>  
>
> I never do such calculations in views rather I create methods in models.py 
> to do so and call them in the template...
>
>  
>
> Like what you could do is..
>
>  
>
> class Student(models.Model):
>
>     name = models.CharField(max_length=200, null=True, blank=True)
>
>     classroom = models.ForeignKey(Classroom,
>
>
>                                   on_delete=models.DO_NOTHING, blank=True, 
> null=True)
>
>  
>
>     def __str__(self):
>
>         return *self*.name
>
>  
>
>     def get_total_fee(self):
>
>         return sum(student.school_fees for student in *self*
> .fee_set.all())
>
>  
>
>     def get_total_paid_fee(self):
>
>         return sum(student.paid_fees for student in *self*.fee_set.all())
>
>  
>
>     def get_remaining_fee(self):
>
>         total_fee = *self*.get_total_fee()
>
>         total_paid = *self*.get_total_paid_fee()
>
>         return float(total_fee - total_paid)
>
>  
>
> and in template you can call...
>
> {{ student.get_remaining_fee }}
>
> On Tuesday, September 8, 2020 at 1:35:56 PM UTC-4 [email protected] wrote:
>
> Thank you for your help @coolguy..but my real problem lies in writing the 
> code for “fee_remaining”, can you help me with that also..thanks
>
>  
>
> Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986> for 
> Windows 10
>
>  
>
> *From: *coolguy
> *Sent: *Tuesday, September 8, 2020 7:45 PM
> *To: *Django users
> *Subject: *Re: Help me with the view please
>
>  
>
> In your return line of code, you are referring to context variable but I 
> don't see you assigned any value to this context variable in your code.
>
> Or if you want to send three variables i.e. "fees", "total_fees" and 
> "fee_remaining"... you need to send them separately like
>
>  
>
> return render(request, 'website/students.html', {"fees": fees, 
> "total_fees": total_fees, "fee_remaining": fee_remaining })
>
>  
>
> then use these variables on your students.html template.  
>
>  
>
> On Tuesday, September 8, 2020 at 12:21:21 PM UTC-4 [email protected] 
> wrote:
>
> My Models
> class Student(models.Model):
> name = models.CharField(max_length=200, null=True, blank=True)
> classroom = models.ForeignKey(‘Classroom’,
> on_delete=models.DO_NOTHING,blank=True, null=True)
> class Classroom(models.Model):
> name = models.CharField(max_length=40,blank=True, null=True)
>
> class Fee(models.Model):
> student = models.ForeignKey(Student, on_delete=models.CASCADE, null=True,)
> classroom = models.ForeignKey(Classroom, on_delete=models.CASCADE, 
> null=True)
> school_fees = models.FloatField(default=1000000)
> paid_fees = models.FloatField(null=False)
> remaining_fees = models.FloatField(blank=True)
> completed = models.BooleanField(null=False, default=False)
>
> views.py
> def student(request, pk):
> student = Student.objects.get(id=pk)
>
> fees = student.fee_set.all().order_by('-publish_date') total_fees = 
> student.fee_set.all().filter(student__id=pk) 
> .aggregate(sum=Sum('paid_fees', flat=True)['sum'] 
>
> fees_remaining = () 
>
> return render(request, 'website/students.html', context)  
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/django-users/e026b778-bac8-4522-ad1f-2ea4b33ad1efn%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/django-users/e026b778-bac8-4522-ad1f-2ea4b33ad1efn%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
>  
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected].
>
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/django-users/bc5f52f8-4b46-40c5-8ff1-9d05e3095346n%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/django-users/bc5f52f8-4b46-40c5-8ff1-9d05e3095346n%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
>  
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/aca1c587-c6e9-4bf6-8c07-0d2927795e82n%40googlegroups.com.

Reply via email to