2010-09-03 19 views
0

我有以下型號:被引用的屬性的搜索

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()命令( 'station.name')

回答

0

你會脫正常化您的模型或內存中的結果進行排序:

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

(代碼沒有測試)

+0

all()是一個查詢,而不是一個列表。它不能被排序。 – geoffspear 2010-09-04 23:48:58

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')] 
+0

@jbochi:不幸的是,隨着wooble的說法,fetch返回一個查詢,所以不能排序。 @Sahid:這個列表只返回每個電臺的第一個電臺和電臺,返回所有時間表,它可以是[y.fetch(1000)for y [x.schedule_set.get()for x in Station.all ().order('name')]返回列表的列表 – pvilas 2010-09-06 16:30:22