2011-10-16 11 views
0

这里被简化数据存储区结构的版本:如何按单独模型中存储的字段进行排序?

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>') 

回答

1

查询只能访问要查询针对实体,如果您有(基于其他实体领域或者某些累计计算)从另一实体的属性你想用来排序结果,你需要将它存储在你正在查询的实体中。

对于收视率,这可能意味着一个周期性的任务,总结收视率并将其分发到文章。

+0

因此,我应该为每个新闻实体添加新的房产评级,对吧?如果我希望在每次添加到NewsRating的新记录时更新它,我如何确保每次投票都被计算在内(即当我读写另一个交易时没有写交易)? –

+0

Dave,看起来像我的场景中没有太多的用户Sharding柜台(我不希望每个新闻每秒超过5票)。所以,我可以按照我上面评论中描述的方法。我对吗? –

1

要做到这一点,你需要运行一个查询获取每一个NewsRating引用您的News实体,总结所有的评级(如数据存储不提供连接)。这在时间和成本方面都将是一项艰巨的任务。我建议以just-overheard-it为例作为参考点。

相关问题