以下是我的数据存储区结构的简化版本:
class News(db.Model):
title = db.StringProperty()
class NewsRating(db.Model):
user = db.IntegerProperty()
rating = db.IntegerProperty()
news = db.ReferenceProperty(News)
现在我需要显示按总评分排序的所有新闻(不同用户评分的总和)。我如何在以下代码中执行此操作:
news = News.all()
# filter by additional parms
# news.filter("city =", "1")
news.order("-added") # ?
for one_news in news:
self.response.out.write(one_news.title()+'<br>')
答案 0 :(得分:1)
查询只能访问您要查询的实体,如果您有来自其他实体的属性(或基于其他实体的字段的某些聚合计算),您希望用它来订购结果,那么您将会需要将它存储在您要查询的实体中。
在评级的情况下,这可能意味着定期任务总结评级并将其分发给文章。
答案 1 :(得分:1)
为此,您需要运行查询,获取引用NewsRating
实体的每个News
并汇总所有评级(因为数据存储区不提供JOIN)。无论是时间还是成本,这都是一项艰巨的任务。我建议您查看just-overheard-it示例作为参考点。