google-app-engine - 在 NDB 查询中按父级分组

标签 google-app-engine app-engine-ndb

假设我有一个包含学校、类(class)和学生模型的模型。 在这个模型中,类(class)是学校的 child ,学生是类(class)的 child 。我想要的是让所有学生按类(class)分组。

使用 NDB 我可以通过以下方式联系学校 A 的学生:

school_key = ndb.Key( 'School', 'A' )
all_students_in_A = Student.query( ancestor = school_key ).fetch( )

但是,我想让学生按类(class)分组。查看文档,查询接受 group_by 参数,但仅适用于模型的实际字段。

最佳答案

我一直在使用 itertools 中的 python groupby 函数来后期处理和分组实体。

您的选择需要按要求的顺序排序,在您的情况下是按键,因为您的 parent 在键中。

这种方法将维持顺序。

http://docs.python.org/2/library/itertools.html#itertools.groupby

我得到的代码不容易共享,因为我拥有的分组功能是存储/可授权查询实体的一部分,该实体允许按结果项的多个属性进行分组,并且实现分布在许多方法中。但是,如果您想查看一些代码,请大声说出来。

关于google-app-engine - 在 NDB 查询中按父级分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19770742/

相关文章:

python - Google App Engine 中的 cgi.test()

python - 在 App Engine 中查询随时间变化的百分比

Python:循环 NDB 实体模型

python - 使用 GAE + ndb 进行配对

java - com.google.gdata.util.ServiceForbiddenException : OK

java - 来自 Compute Engine 和/或外部网络的带有 SSL 的 Google Cloud SQL

java - AppEngine 开发服务器 - 并发任务限制

python - 我应该等待 Google App Engine 请求中的每个 ndb.Model.put_async() 吗?

google-app-engine - 为 App Engine NDB 模型指定 key_name 的最佳方法是什么?

python - 如何在不知道类名的情况下使用 NDB 查询