Not sure what the "@aproperty" are here for, but in your views.py file, you 
could do this calculation, passing in the ID of the staff record:

from .models import Staff, LeaveReportStaff

def get_leave_balance(staff_id):
    total_leave_days = Staff.objects.get(pk=staff_id)
    leave_reports = LeaveReportStaff.objects.filter(staff=staff_id)
    total_leave_reports = 0
    for leave in leave_reports:
        total_leave_reports = total_leave_reports + (leave.end_date - 
leave.start_date).days
    return total_leave_days - total_leave_reports  # leave balance


On Tuesday, 19 April 2022 at 17:34:33 UTC+2 techg...@gmail.com wrote:

> Hello,
>
> I have a model Staff and LeaveReportStaff, I wanted to get leave_balance 
> between Total_Leave_Days and leave_days.
>
> Please advise the best way forward.
>
> class Staff(models.Model):
>     Total_Leave_Days = models.PositiveIntegerField(default=0)
>     course = models.ForeignKey(Course, on_delete=models.DO_NOTHING, 
> null=True, blank=False)
>     admin = models.OneToOneField(CustomUser, on_delete=models.CASCADE)
>
> class LeaveReportStaff(models.Model):
>     staff = models.ForeignKey(Staff, on_delete=models.CASCADE)
>     start_date = models.DateField()
>     end_date = models.DateField()
>     leave_type = models.CharField(choices=LEAVE_TYPE, max_length=25, 
> null=True, blank=False)
>
> @property
> def leave_days(self):
>     return (self.end_date - self.start_date).days
>
> @property
> def leave_balance(self):
>     return (self.Total_Leave_Days - self.leave_days)
>
>

-- 
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/bc9885b8-0cae-4958-bf4e-7a542a55459an%40googlegroups.com.

Reply via email to