python - 总结休假的数量
问题描述
我有一个具有一对多关系的模型,例如,用户可以申请一个或多个叶子。我想将每个用户的叶子数相加,然后按用户分组,但我不知道该怎么做。我做了如下的事情,但它似乎不起作用。
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
解决方案
如果您需要用户名,那么在用户模型上运行查询可能是有意义的。
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%}
推荐阅读
- sql-server - 为什么我的 SQLExpress 一直断开连接,即使它显示为正在运行?
- c# - 使用 LINQ 将 Date 转换为 WeekDay 和 Week of Month
- android - Android ShortCutManager 将静态快捷方式替换为动态快捷方式
- c++ - 无法读取 kernel32.dll 基地址上的内存
- c# - 在 MacOs 上使用 .Net 访问图片目录时获取 System.UnauthorizedAccessException
- python - aws s3 图像下载而不是使用 boto3 在浏览器上查看
- android - Android Studio 4.1.1 在 Windows 10 上绕过 SDK 安装
- javascript - 为什么我不能使用 jquery 和表 id 将我的 html 表的显示更改为“块”
- javascript - 如何将文本从可编辑的 div 附加到 textarea jquery?
- mysql - 在 MYSQL 中计算别名值