如何在Django中添加decimal.Decimal值?

时间:2015-09-08 11:46:10

标签: python django

我有django观点:

reviews = singles.review_set.all()
    for rev in reviews:
        print rev.sentiment
        print type(rev.sentiment)

它返回decimal.Decimal但我需要计算数字的总和。

当我尝试sum(rev.sentiment)时,我收到错误'Decimal' object is not iterable。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

您想要汇总多个值。不管怎样,rev.sentiment是一个值,所以你得到了TypeError,因为总结它是没有意义的。

你可以在for循环中建立一个总和:

rev_sum = 0
for rev in reviews:
    rev_sum += rev.sentiment

或使用理解。

rev_sum = sum(rev.sentiment for rev in reviews)

如果您有许多对象,使用aggregation在数据库中执行求和可能更有效。

from django.db.models import Sum

aggregate = reviews.aggregate(Sum('sentiment'))
rev_sum = aggregate['sentiment__sum']  # retrieve the value from the dict