sum_acquired_value = Investment.objects.filter(customer=pk).aggregate(Sum('acquired_value'))
结果是
{'acquired_value__sum': Decimal('125000')}
但是我需要使用值125000
进行计算。
答案 0 :(得分:0)
.aggregate(..)
的结果是一个简单的字典:
(..)
aggregate()
是QuerySet
的终止子句,在调用时, 返回名称/值对的字典。名称是一个标识符 总价值;该值是计算得出的总和。 (..)
您可以通过执行查找来获取值,例如:
the_sum = sum_acquired_value['acquired_value__sum'] # Decimal('125000')
然后可以使用the_sum
执行算术运算(请注意,Decimal
不允许使用所有类型的数字进行算术运算)。在模板中,str(..)
将被隐式应用,从而呈现Decimal
类包装的值。
基本原理是,您可以在同一查询中执行多个聚合(例如,同一查询中的总和,平均值,最小值和最大值),然后检索包含值的字典。
但是最好自己给聚合命名:
the_sum = Investment.objects.filter(
customer=pk
).aggregate(acquired_sum=Sum('acquired_value'))['acquired_sum']