首页 > 解决方案 > 使用 sum() 在项目列表中查找汇总价格

问题描述

我有一个包含产品的项目“display_list”列表,这些产品中有一个名为“pro price”的字段,它是列表中产品的价格。

例如,如果我有一个包含 2 个苹果和一个香蕉的显示列表,我想计算出 2 个苹果和香蕉的总价格,我该怎么做呢?

我目前已经尝试过

total = sum([(pro.proprice for pro in display_list)])

但这不起作用,有人可以伸出援手吗?提前致谢

标签: pythondjango

解决方案


你在列表推导中写了括号,结果你创建了一个包含一个元素的列表:一个生成器。你不能取一个发电机的总和。

您可以做两件事:将生成器传递给sum(..),或者您可以先生成一个列表并将其传递给sum(..),因此:

total = sum([pro.proprice for pro in display_list])

或者:

total = sum(pro.proprice for pro in display_list)

话虽如此,如果display_list是 a QuerySet,您可以使用聚合:

# if display_list is a QuerySet
from django.db.models import Sum

total = display_list.aggregate(total=Sum('proprice'))['total']

推荐阅读