按引用属性搜索

时间:2010-09-03 18:47:44

标签: python google-app-engine

我有以下型号:

class Station(db.Model):
    code = db.StringProperty(required=True)
    name = db.StringProperty(required=True)

class Schedule(db.Model):
    tripCode = db.StringProperty(required=True)
    station = db.ReferenceProperty(Station, required=True)    
    arrivalTime = db.TimeProperty(required=True)
    departureTime = db.TimeProperty(required=True)

如何以编程方式按订单名称订购所有时间表?

类似于Schedule.all()。order('station.name')

2 个答案:

答案 0 :(得分:0)

您将对模型进行去标准化或在内存中对结果进行排序:

Schedule.all().fetch(100).sort(key=lambda s: s.station.name)

(代码未经测试)

答案 1 :(得分:0)

使用排序后,我认为您需要获取所有实体:

Schedule.all().fetch (100).sort(key=lambda s: s.station.name)

也许你也可以use collection name。 但我认为jbochi答案更好:)

[x.schedule_set.get () for x in Station.all ().order ('name')]