2010-09-19 85 views
2

編輯:使用key = lambda求解並學習我實際正在做什麼。使用geomodel命令(「 - modified」)

隨着gemodel像

class A(GeoModel,search.SearchableModel): 

我試圖用db.GeoPt存儲谷歌地圖 協調與GAE和地質模型我可以映射和匹配日期訂購。但訂單(「 - 修改」)不起作用。沒有痕跡。所有想法都歡迎。 應該排序是

a = A.proximity_fetch(A.all().filter("modified >", 
timeline).filter("published =", True).filter("modified <=", 
bookmark).order("-modified") ,db.GeoPt(lat, lon),max_results=PAGESIZE 
+1, max_distance=m) 

所有參數顯示,除了順序(「 - 修改」)工作的代碼

了建議的方式與拉姆達排序我得到消息 「類型錯誤:拉姆達()恰恰1參數(2給出)「

a = A.proximity_fetch(A.all().filter("modified >", timeline).filter("published =", True).filter("modified <=", bookmark).order("-modified") ,db.GeoPt(lat, lon),max_results=40, max_distance=m) 
a = sorted(a, lambda x: x.modified, reverse=True) 

回答

5

GeoModel對從最近點到最遠點的結果進行排序。 你需要後已執行proximity_fetch到你的結果與蟒蛇進行排序:

result = sorted(result, key=lambda x: x.modified, reverse=True) 

編輯:忘記使用「鑰匙」的說法對排序

+0

非常感謝!我試圖通過這種方式得到消息TypeError:()需要完全1個參數(2給出)現在很高興有一個跟蹤 – 2010-09-22 04:58:33

+0

是的,我的道歉,我犯了一個錯誤。排序的聲明是 'sorted(iterable [,cmp [,key [,reverse]]])'所以,你是對的,你需要使用'key = lambda'。 – sahid 2010-09-22 09:26:14

5

GeoModel執行多個查詢並將結果組合到單個結果集中。每個查詢都應該按照排序順序執行,但最終結果可能不會按照該順序排序。在內存中對結果進行排序可能足以克服這一點。

+0

謝謝尼克的信息。我試圖在內存中排序。 – 2010-09-22 04:02:51