我可以使App Engine模型属性调用函数吗?

问题描述 投票:0回答:2

我正在基于某种排名算法实现带有“热门”故事的首页。但是,我无法弄清楚如何通过我自己的排序函数传递App Engine数据存储区(就像我可以在Python中使用sort(key = ranking_function)一样)。我想要这样的东西:

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)

知道如何使用App Engine数据存储区模型进行此操作吗?

google-app-engine dynamic google-cloud-datastore ranking
2个回答
1
投票

没有内置属性可以处理此问题,但是有一个库aetycoon实现了DerivedProperty和其他相关属性,可以执行您想要的操作。 Here's有关其工作原理的文章。


3
投票

我认为App Engine无法以您所描述的方式做到这一点,但我认为有可能实现您想要的目标。您希望数据存储区在每次执行查询时都对数据存储区中的每个元素运行排序功能。这不是很可扩展,因为您可能要对数百万个实体进行排名。

© www.soinside.com 2019 - 2024. All rights reserved.