覆盖ndb属性

时间:2016-07-14 18:56:18

标签: python google-app-engine app-engine-ndb google-cloud-datastore

我很难改变默认的_get_for_dict()方法。 这就是我的代码目前所看到的:

class ImageProperty(ndb.BlobKeyProperty):

    def _get_for_dict(self, entity):
        value = super(ImageProperty, self)._get_for_dict(entity)
        if value:
            return images.get_serving_url(value)
        else:
            return None

我对覆盖方法的概念没那么多,并且在使用ndb时遇到了麻烦... 基本上我想要做的事情:将我的数据存储区存储为BlobKeyProperty,但在将其作为字典检索时,我想获取图像服务网址。

非常感谢

1 个答案:

答案 0 :(得分:1)

我还没试过这个,但我认为这会更好_from_base_type一个钩子:

class ImageProperty(ndb.BlobKeyProperty):
    def _from_base_type(self, value):
        return images.get_serving_url(value)

如果我正确理解documentation,则此API"堆栈"所以你不需要在超类(_from_base_type)上调用BlobKeyProperty。我想ndb handles that for you。就个人而言,我认为当super看起来它可以正常工作时,这对API来说有点奇怪...但是......那就是我的猜测。