请假总和

问题描述 投票:0回答:1

我有一个具有一对多关系的模型,例如,用户可以申请一个或多个叶子。我想累加每个用户的叶子数,然后按用户分组,但是我不确定该怎么做。我做了如下操作,但似乎不起作用。

def monthly_leave_taken(request):
    result = NewLeave.objects.values('user').annotate(Sum('Total_working_days'))
    return render(request, "result.html", locals())

class NewLeave(models.Model):
    user = models.ForeignKey(User, default='', on_delete=models.CASCADE)
    leave_balances = models.ManyToManyField(Leave_Balance)
    leave = (
        ('annual', 'annual'),
        ('sick', 'sick'),

    )

    Leave_type = models.CharField(max_length=100, choices=leave, blank=False, default='')

    Start_Date = models.DateField(null=True, blank=False)
    End_Date = models.DateField(null=True, blank=False)
    Total_working_days = models.FloatField(null=True, blank=False)
    Reason = models.TextField(max_length=1000, null=True, blank=False)
    Aut = (
        ('Pending', 'Pending'),
        ('Approved', 'Approved'),
        ('Rejected', 'Rejected'),
    )
    Manager_Authorization_Status = models.CharField(max_length=100, choices=Aut, default='Pending', blank=False)
    Authorized_by_Manager = models.CharField(max_length=100, default='', blank=False)
    Authorised_Date = models.DateField(null=True, blank=False)
    DirAuth = (
        ('Pending', 'Pending'),
        ('Approved', 'Approved'),
        ('Rejected', 'Rejected'),
    )

    Director_Authorization_Status = models.CharField(max_length=100, choices=DirAuth, default='Pending', blank=False)
    Authorized_by_Director = models.CharField(max_length=100, default='', blank=False)
    Date_Authorized = models.DateField(null=True, blank=False)
    arc = (
        ('', ''),
        ('Archived', 'Archived'),

    )
    Archived = models.CharField(max_length=100, choices=arc, default='', blank=False)

    def __str__(self):
        return self.Leave_type
python django
1个回答
1
投票

如果需要用户first_name,则可能需要在User模型上运行查询。

users = User.objects.annotate(new_leave_tot_w_days=Sum('newleave__total_working_days'))

在模板中,您可以遍历用户并访问“ new_leave_tot_w_days”属性。

{%for user in users %} <td>{{user.first_name}}</td> <td>{{user.new_leave_tot_w_days}}</td> {%endfor%}
© www.soinside.com 2019 - 2024. All rights reserved.