从求和函数中检索值

时间:2018-09-23 19:39:30

标签: django python-3.x

sum_acquired_value = Investment.objects.filter(customer=pk).aggregate(Sum('acquired_value'))

结果是

{'acquired_value__sum': Decimal('125000')}

但是我需要使用值125000进行计算。

1 个答案:

答案 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']