gpt4 book ai didi

python - 如何使迭代器对 n 个对象的字段求和

转载 作者:行者123 更新时间:2023-11-28 21:38:29 25 4
gpt4 key购买 nike

假设我有一个模型

class Testmodel():
amount = models.IntegerField(null=True)
contact = models.CharField()

现在我正在做这样的查询:

obj1 = Testmodel.objects.filter(contact = 123)

并假设它在任何情况下都返回 n 个数字对象,例如 (obj1,obj2,obj3 ...)

所以,如果我想从所有返回的对象 (obj1,obj2,obj3 ...) 中求出 amount 的总和,那么如何做到最好方式。任何帮助将不胜感激。

最佳答案

在数据库级别执行此操作通常比在 Python 中执行更好。我们可以为此使用 .aggregate(..):

from django.db.models import Sum

Testmodel.objects.filter(contact=123)<b>.aggregate(total=Sum('amount'))['total']</b>

.aggregate(total=Sum('amount')) 将返回包含单个键值对的字典:'total' 将与行的 amount 的总和。如果没有选择任何行(即过滤器不匹配任何内容),那么它会将 None 与键相关联。

鉴于数据库支持对值求和(大多数数据库都支持),您可以构造一个类似于以下内容的查询:

SELECT SUM(amount) AS total
FROM app_testmodel
WHERE contact = 123

关于python - 如何使迭代器对 n 个对象的字段求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48167565/

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