gpt4 book ai didi

python - Django 模板中的总计/小计

转载 作者:行者123 更新时间:2023-12-01 05:21:06 25 4
gpt4 key购买 nike

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

假设我想生成客户订单的报告,例如:

Desired Report Output

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

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

TOTAL $ 9

假设我们在 View 中填充了一个字典

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>
...

知道如何计算总计/小计吗?

我知道基本建议是在 View 中执行此操作,但我不知道如何将其放入 orgs 字典中。根据 django 文档( https://docs.djangoproject.com/en/dev/ref/templates/api/#variables-and-lookups ),尝试使用并行数据结构似乎是不可能的。

有什么想法吗?

最佳答案

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

如果传入了 org 字典,请按以下方式更改它。

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>

关于python - Django 模板中的总计/小计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22366161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com