说我有学校,班级,学生模特的模特。 在这个模型中,课程是学校的孩子,学生是班级的孩子。我想要的是让所有学生按班级分组。
使用NDB我可以通过以下方式为学校A的学生打电话:
school_key = ndb.Key( 'School', 'A' )
all_students_in_A = Student.query( ancestor = school_key ).fetch( )
但是,我想让班上的学生进入A组。查看doc,查询接受group_by参数,但仅适用于模型的实际字段。
答案 0 :(得分:2)
我一直在使用itertools的python groupby函数来发布进程和组实体。
您的选择需要按照所需的顺序进行排序,在您的情况下按密钥进行排序,因为您的父母在密钥中。
这种方法将维持秩序。
http://docs.python.org/2/library/itertools.html#itertools.groupby
我得到的代码不容易共享,因为我拥有的分组功能是存储/可授权查询实体的一部分,它允许按结果项的多个属性进行分组,并且实现分布在多个方法中。但如果您想看一些代码,请大声喊出来。
答案 1 :(得分:1)
我会在取得学生后用Python进行分组。
classes = defaultdict(list)
for student in all_students_in_A:
class = student.key.id()
classes[class].append(student)
现在,类是一个dict,其中键是类ID,值是学生列表。