我正在实施基于某个排名算法的“热门”故事的首页。然而,我不知道如何传递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