我想分别汇总每一天的项目数量。
型号:
class Bill(models.Model):
date = models.DateTimeField()
amount = models.IntegerField(null=False, blank=False)
模板:
{% with var=bill.date|date:"Y-m-d" %}
{{ var }} #dict?
{% endwith %}
我认为,将日期作为键添加到字典中,并将项目的数量计为值是一个好主意,所以我写下来:
Dict[var] += bill.amount
如何在Django模板中使用它?
我是正确的吗?也许其他解决方案更好?
答案 0 :(得分:0)
使用aggregation/annotate获取sum of amount by date。在模板中,只需通常使用查询集打印其值。
<强> 1。如果您的日期时间具有相同的值(小时,分钟和秒),则应该能够使用以下内容。
bills = Bill.objects.values('date').annotate(Sum('amount'))
在模板中使用
{% for bill in bills %}
{{ bill.date }} - {{ bill.sum__amount }}
{% endfor %}
<强> 2。如果您的日期时间与不同的小时数有关,并且您希望按日期分组并打印其总和:
bills = Bill.objects.extra(select={'day': 'date( date )'})\
.values('day').annotate(Sum('amount'))
然后打印出来:
{% for bill in bills %}
{{ bill.day }} - {{ bill.sum__amount }}
{% endfor %}
第3。如果您想在模板中进行计算(我强烈建议您不要推荐),请查看regroup