如何在 django 模板中实现运行总计?

2024-04-05

我有一个视图返回按 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 and li标签根据 sale_date 给我一个很好的分组效果

我的模板分组基于以下代码:

{% regroup salecursor by sale_date|date:"j/m/Y" as salelist %}

and

{{ saleitem.grouper }

结果是:

2010年5月10日

  • 项目 1 名称 - 2
  • 第 2 项名称 - 10

2010年6月10日

  • 项目 1 名称 - 1

你如何获得每个组的运行总数,即第一组总共应该有 12 个,第二组总共应该有 1 个,并且具有这种效果;

2010年5月10日

  • 项目 1 名称 - 2
  • 第 2 项名称 - 10

    Total 12

2010年6月10日

  • 项目 1 名称 - 1

    Total 1

谢谢 迦特


什么?难道你不知道running_total筛选?

只是在那里开玩笑。没有这样的一个,但写一个很容易。这有点低效,因为它再次遍历分组列表以sum the salesum values.

# 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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 django 模板中实现运行总计? 的相关文章

随机推荐