我想知道,我怎样才能获得从数据存储区(python)获得的评级实体的总和?
我是不是该:
ratingsum = 0
for rating in ratings:
ratingsum + rating
print ratingsum
?
我想知道,我怎样才能获得从数据存储区(python)获得的评级实体的总和?
我是不是该:
ratingsum = 0
for rating in ratings:
ratingsum + rating
print ratingsum
?
是的,差不多就是这样。检索您想要求和的所有实体,并在您的应用中对它们求和。GQL中没有SUM
。
如果您要完成的是找到实体的平均评级,那么有更好的方法。
class RateableThing(db.Model):
num_ratings = db.IntegerProperty()
avg_rating = db.FloatProperty()
查找事物的平均评级是一个简单的查找,添加新评级只是:
thing.avg_ratings = ((thing.avg_ratings * thing.num_ratings) + new_rating) / thing.num_ratings + 1
thing.num_ratings += 1
thing.put()
App Engine 数据存储区的流行习惯是在写入时做尽可能多的工作,在读取时尽可能少做,因为读取会更频繁地发生。
我无法回答您问题的 Google App Engine 部分,但您的代码(如果您将 a 更改+
为+=
)相当于:
ratingsum = sum(ratings)
我很确定您可以sum()
在任何包含类似数字的对象的序列或可迭代对象上使用。