Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 如何按存储在单独模型中的字段排序?_Google App Engine_Google Cloud Datastore - Fatal编程技术网

Google app engine 如何按存储在单独模型中的字段排序?

Google app engine 如何按存储在单独模型中的字段排序?,google-app-engine,google-cloud-datastore,Google App Engine,Google Cloud Datastore,以下是我的数据存储结构的简化版本: class News(db.Model): title = db.StringProperty() class NewsRating(db.Model): user = db.IntegerProperty() rating = db.IntegerProperty() news = db.ReferenceProperty(News) 现在我需要显示所有按总评分(不同用户评分之和)排序的新闻。如何在以下代码中执行此操作:

以下是我的数据存储结构的简化版本:

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>')
news=news.all()
#通过附加参数进行过滤
#news.filter(“city=”,“1”)
新闻.命令(“-添加”)#?
新闻中的一条新闻:
self.response.out.write(one_news.title()+“
”)
查询只能访问您要查询的实体,如果您有来自其他实体的属性(或基于其他实体字段的某些聚合计算)要用于排序结果,则需要将其存储在您要查询的实体中


在评级的情况下,这可能意味着一项定期任务,对评级进行汇总并将其分发到文章中。

要做到这一点,您需要运行一个查询,获取引用您的
新闻
实体的每个
新闻评级
,并对所有评级进行汇总(因为数据存储不提供联接)。从时间和成本两方面来看,这将是一项艰巨的任务。我建议看一看这个例子作为参考点。

所以,我应该为每个新闻实体添加新的属性评级,对吗?如果我希望在每次向NewsRating添加新记录时更新它,我如何确保每次投票都被计算(即,当我读写另一个事务时没有写事务)?Dave,在我的场景中,似乎对用户切分计数器没有多大意义(我不希望每一条新闻每秒有超过5张投票)。因此,我可以遵循我在上面的评论中描述的方法。我说得对吗?