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

Python 如何在Django中添加decimal.decimal值?,python,django,Python,Django,我有django的观点: reviews = singles.review_set.all() for rev in reviews: print rev.sentiment print type(rev.sentiment) 它返回decimal.decimal,但我需要计算数字的总和 当我尝试求和(修订情感)时,我得到错误“Decimal”对象不可编辑。如何解决此问题?您想对几个值求和。然而,rev.touction是一个单一的值,因此您得到的是Ty

我有django的观点:

reviews = singles.review_set.all()
    for rev in reviews:
        print rev.sentiment
        print type(rev.sentiment)
它返回
decimal.decimal
,但我需要计算数字的总和


当我尝试
求和(修订情感)
时,我得到错误
“Decimal”对象不可编辑。如何解决此问题?

您想对几个值求和。然而,
rev.touction
是一个单一的值,因此您得到的是
TypeError
,因为对其求和没有意义

您可以在for循环中构建求和:

rev_sum = 0
for rev in reviews:
    rev_sum += rev.sentiment
或者使用理解

rev_sum = sum(rev.sentiment for rev in reviews)
如果您有许多对象,那么使用在数据库中求和可能会更有效


谢谢还有一件事,我需要分别添加负数和正数。如何做到这一点?例如循环的例子是直接的,你只有两个变量,一个是正值,一个是负值。为了理解,请注意,您可以进行
sum(如果x>0,评论中的rev.touction为rev)
。最后,对于聚合,请注意,您可以执行
审阅.筛选(情绪\uu gt=0).聚合(…)
。太好了。非常感谢@阿拉斯戴拉丁阿比特,你能帮我计算一下平均值吗。我尝试了计数(评论)
来计数评论以计算平均值,但没有成功。我完成了这项工作
naggregate=reviews.filter(touction\u lt=0)。aggregate(Avg('touction'))
prev\u sum=paggregegregate['touction\u Avg']
from django.db.models import Sum

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