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 e.g....
        {% for student in students %}
            <li>{{ student.name }}: {{ student.get_remaining_fee }}</li>
            <br>
        {% endfor %}


On Tuesday, September 8, 2020 at 1:35:56 PM UTC-4 dex9...@gmail.com 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 dex9...@gmail.com 
> 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 django-users...@googlegroups.com.
> 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 django-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/fa0084c8-5c21-4f46-82f1-23cbb8abe1can%40googlegroups.com.

Reply via email to