我有一个视图,它返回按sales_date分组的销售摘要,例如
[{'sale_date':datetime.datetime(2010,10,5,0,0), 'salesum':2, 'item':1},
{'sale_date':datetime.datetime(2010,10,5,0,0), 'salesum':10,'item':3},
{'sale_date':datetime.datetime(2010,10,6,0,0), 'salesum':1, 'item':1}]
我在模板中进行了分组,并将其与html ul 和 li 标记结合起来,根据sale_date为我提供了一个很好的分组效果
我的模板分组基于以下代码:
{% regroup salecursor by sale_date|date:"j/m/Y" as salelist %}
和
{{ saleitem.grouper }
结果是:
05/10/2010
06/10/2010
你如何获得每组的跑步总数,即第一组的总数应为12,第二组的总数为1,并具有此效果;
05/10/2010
item2名称 - 10
总计12
06/10/2010
第1项名称 - 1
总计1
由于 加特
答案 0 :(得分:10)
什么?你不知道running_total
过滤器吗?
开玩笑吧。没有一个,但写一个很容易。这有点低效,因为它再次遍历分组列表sum
salesum
值。
# app_filters.py
@register.filter
def running_total(sales_list):
return sum(d.get('salesum') for d in sales_list)
您可以在模板中使用它:
{% regroup salecursor by sale_date|date:"j/m/Y" as salelist %}
<ul>
{% for sales in salelist %}
<li>{{ sales.grouper }}
<ul>
{% for item in sales.list %}
<li>{{ item.item }} - {{ item.salesum }}</li>
{% endfor %}
<li>Total: <b>{{ sales.list|running_total }}</b></li>
</ul>
</li>
{% endfor %}
</ul>