我有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
。我该如何解决这个问题?
答案 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