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.

Reply via email to