我正在實施基於某個排名算法的「熱門」故事的首頁。然而,我不知道如何傳遞Appengine的數據存儲我自己的排序功能(就像我可以在Python中排序(key = ranking_function))。我想是這樣的:我可以使Appengine模型屬性調用一個函數嗎?
class Story(db.Model):
user = db.ReferenceProperty(User)
text = db.TextProperty()
def ranking(self):
# my ranking function, returns an int or something
return 1
ranking = property(ranking_function)
這樣我可以稍後致電:
Story.all().order("ranking").limit(50)
不知道如何使用AppEngine上的數據存儲模型來做到這一點?
我這樣做,它奇妙地工作。但是,當我嘗試使用一些DerivedProperties創建新對象時,我添加了很多似乎會拋出NotSavedErrors的屬性。唯一的解決辦法是將整個事情包裝在一個嘗試除外。它可以工作,但有點難看。 謝謝! – 2010-02-26 00:27:39
你能更具體嗎?你會得到什麼stacktrace,以及在什麼情況下? – 2010-02-26 13:34:09