Python Django模板中的总计/小计

Python Django模板中的总计/小计,python,django,django-templates,django-views,Python,Django,Django Templates,Django Views,我对一个简单的问题很难理解。如何在django模板中计算总计和小计 假设我想生成客户订单的报告,类似于: Desired Report Output Customer1 1 Widgets $ 2 1 Bobbins $ 1 Subtotal $ 3 Customer2 2 Widgets $ 4 2 Bobbins $ 2 Subtotal $ 6 TOTA

我对一个简单的问题很难理解。如何在django模板中计算总计和小计

假设我想生成客户订单的报告,类似于:

Desired Report Output

    Customer1
    1   Widgets   $ 2
    1   Bobbins   $ 1
        Subtotal  $ 3

    Customer2
    2   Widgets   $ 4
    2   Bobbins   $ 2
        Subtotal  $ 6

        TOTAL     $ 9
假设我们在视图中填充了一个字典

orgs = {}
orgs['Customer1'] = [
    { 'qty': 1, 'descr' : 'Widgets', 'price': 2 },
    { 'qty': 1, 'descr' : 'Bobbins', 'price': 1 },
    ]
...
还有这样一个模板:

{% for org,orders in orgs.items %}
<p>{{ org }}
    {% for order in orders %}
    <ul>
        <li>{{ order.qty }}</li>
        <li>{{ order.descr }}</li>
        <li>{{ order.price }}</li>
    </ul>
...
{%用于组织,orgs.items%中的订单]
{{org}
{订单%中的订单为%0}
  • {{order.qty}
  • {{order.descr}}
  • {{order.price}}
...
你知道如何计算总数/小计吗

我知道基本建议是在视图中这样做,但我不知道如何将其放入orgs目录中。根据django文档()的说法,尝试使用并行数据结构似乎是不可能的


有什么想法吗?

与其说组织键的值是字典列表,不如说它是一个字典,其中一个键名为
orders
,另一个键名为
subtotal

如果组织词典被传入,下面是您如何更改它的

total = 0
for org in orgs:
    orders = orgs[org]
    subtotal = sum(order['qty']*order['price'] for order in orders)
    total += subtotal
    orgs[org] = {'orders': orders, 'subtotal': subtotal}
现在,在模板中,您可以执行以下操作:

{% for org,org_data in orgs.items %}
<p>{{ org }}
    {% for order in org_data.orders %}
    <ul>
        <li>{{ order.qty }}</li>
        <li>{{ order.descr }}</li>
        <li>{{ order.price }}</li>
    </ul>
    {% endfor %}
    Subtotal: {{ org_data.subtotal }}
</p>
{% endfor %}
<p>Total: {{total}}</p>
{%用于组织,orgs.items%}
{{org}
{对于org_data.orders%}
  • {{order.qty}
  • {{order.descr}}
  • {{order.price}}
{%endfor%} 小计:{{org_data.Subtotal}

{%endfor%} 总计:{{Total}