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)
--
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.
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 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 dex9...@gmail.com wrote:
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/bc5f52f8-4b46-40c5-8ff1-9d05e3095346n%40googlegroups.com.
Student name: student1
School fees: 100000.0
Paid fees: 25000.0
Remaining fees: 75000.0
Sorry for bothering you @coolguy, you’re the only person who seems to be nice to a Django beginner developer like me, and I would like to bother you one more time
Your solution for using methods in models is perfectly fine
You see I want school_fees to be a fixed amount, example $300
So when a student pays more than once(student.fee_set), lets say this month student 1 pays $50
And another month pays $100 dollars, I want payments to added and subtracted from fixed schools_fees($300)
Remainingfees to be $300 – (($50)+($100))
BUT what “ fees = student.fee_set.aggregate(total_paid_fees=Sum('paid_fees'), total_school_fees=Sum('school_fees'))” does is that it sums both paid fees school fees every time a student pays, I want only paid fees to added every time a student pays but not school fees
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/aca1c587-c6e9-4bf6-8c07-0d2927795e82n%40googlegroups.com.
Student name: student1
School fees: 100000.0
Paid fees: 35000.0
Remaining fees: 65000.0
Thank you brother @coolguy, I have put to work your latest solution and it has worked like a charm.I have been learning a lot from you lately, as you know i am still a beginner, i would love to learn one more thing from you..i have a boolean field "completed", and i want django to automatically check it when balance_fees or remaining_fees is equal to zero,
Here is my model
my template
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/4f854ccd-3bd0-4b8c-b17c-03e32e8f56dbn%40googlegroups.com.
Thanks it has worked, but it doesn’t work with my total_paid_fees, I want to be automatically checked when school_fees substracts summation of all paid_fees, just like this solution you provided me with the last time
first_record = student.fee_set.first()
school_fees = first_record.school_fees
paid_fees = student.fee_set.aggregate(total_paid_fees=Sum('paid_fees'))
balance_fees = school_fees - paid_fees["total_paid_fees"]
Sent from Mail for Windows 10
From: coolguy
Sent: Monday, September 14, 2020 9:09 PM
To: Django users
Subject: Re: Help me with the view please
Its simple... in your fee models' save method check that self.remaining_fees is zero then make self.completed field to true... I added else clause in case if admin make changes to paid fees and after changes student still has some dues.
def save(self, *args, **kwargs):
self.remaining_fees = self.school_fees - self.paid_fees
if self.remaining_fees == 0:
self.completed = True
else:
self.completed = False
super().save(*args, **kwargs)
On Monday, September 14, 2020 at 7:11:51 AM UTC-4 dex9...@gmail.com wrote:
Thank you brother @coolguy, I have put to work your latest solution and it has worked like a charm.I have been learning a lot from you lately, as you know i am still a beginner, i would love to learn one more thing from you..i have a boolean field "completed", and i want django to automatically check it when balance_fees or remaining_fees is equal to zero,
Here is my model
my template
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/39449132-92e8-41ca-a208-e0c130c4c438n%40googlegroups.com.
def save(self, *args, **kwargs):
self.paid_fees = student.fee_set.aggregate(total_paid_fees=sum('paid_fees'))
self.school_fees = first_record.school_fees
self.remaining_fees = self.school_fees - self.paid_fees
if self.remaining_fees == 0:
self.completed = True
else:
self.completed = False
super().save(*args, **kwargs)
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/54c7e230-5df2-45ac-9912-494b1fb7dd91n%40googlegroups.com.
Thanks for your valuable information, it seems my models are not well constructed, I will first work on them.
Don’t you have a YouTube channel or website or paid course somewhere like Udemy where I can learn more
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/1ea86b73-142f-4e30-810e-85995af874fbn%40googlegroups.com.
Since model design is where I very much struggle, and I think my fee management system models are not well design, so I need your help in redesigning my models please
not sure what are you looking for.. but based on your model setup... school fees is setup once so we picked it up from first object/record from table, while paid fees are collected quarterly or whatever means there will be more than one transaction in fee table. We have already calculated the "paid_fees" from fee table like this
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/246c090a-1625-42e5-b956-0c0a727b6af5n%40googlegroups.com.
Hi @coolguy, thanks for your attachments, have created all the views and templates, and I have been working on them for my new web app, for this new models will it be easy for more implement or auto check paid all checkbox all payments have been completed, please, how?
Sent from Mail for Windows 10
From: coolguy
Sent: Thursday, September 17, 2020 6:26 AM
To: Django users
Subject: Re: Help me with the view please
If you are using sqllite3 then make a copy of it and delete the existing sqllite3 file from your project. Keep the old file as you may need it.
Here are project files... i quickly make them but these are working..
On Wednesday, September 16, 2020 at 3:57:22 PM UTC-4 dex9...@gmail.com wrote:
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/36d3f067-277b-4379-ab2e-908e88f03f37n%40googlegroups.com.
Thanks for your previous tips, and I have already created the get_absolute_url for my DetailView and It is working just fine
def get_absolute_url(self):
return reverse("student_detail", kwargs={"pk": self.pk})
I think now I can learn from you how use views to generate my output
Sent from Mail for Windows 10
From: coolguy
Sent: Tuesday, September 22, 2020 4:32 AM
To: Django users
Subject: Re: Help me with the view please
I have made some changes to the model.py and now methods/functions are properties(@property). It's of personal preference and you will find programmers prefer properties and functions for their own understanding. google it you will see...
Since these functions are not doing big calculations with no parameter/argument and are very basic so we can use property instead.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/c15579f9-75dd-489e-95b9-4672cba11c92n%40googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/c15579f9-75dd-489e-95b9-4672cba11c92n%40googlegroups.com.
I cant seem to put together this template for adding fee, for roll#, tuition fee and remaining fee, I have managed only to create the form, can you help me with that
Sent from Mail for Windows 10
From: coolguy
Sent: Tuesday, September 22, 2020 6:10 PM
To: Django users
Subject: Re: Help me with the view please
how about following outputs...
On Tuesday, September 22, 2020 at 4:44:45 AM UTC-4 dex9...@gmail.com wrote:
Thanks for your previous tips, and I have already created the get_absolute_url for my DetailView and It is working just fine
def get_absolute_url(self):
return reverse("student_detail", kwargs={"pk": self.pk})
I think now I can learn from you how use views to generate my output
Sent from Mail for Windows 10
From: coolguy
Sent: Tuesday, September 22, 2020 4:32 AM
To: Django users
Subject: Re: Help me with the view please
I have made some changes to the model.py and now methods/functions are properties(@property). It's of personal preference and you will find programmers prefer properties and functions for their own understanding. google it you will see...
Since these functions are not doing big calculations with no parameter/argument and are very basic so we can use property instead.
What you need to do is.. wherever you called the method with () brackets... remove them like example below...
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/246c090a-1625-42e5-b956-0c0a727b6af5n%40googlegroups.com.
--
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/36d3f067-277b-4379-ab2e-908e88f03f37n%40googlegroups.com.
--
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/c15579f9-75dd-489e-95b9-4672cba11c92n%40googlegroups.com.
--
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/7c03b117-e913-41a0-bac6-61db7121e98fn%40googlegroups.com.