【问题标题】:Override default _get_for_dict() for ndb Property覆盖 ndb 属性的默认 _get_for_dict()
【发布时间】:2016-07-14 18:56:17
【问题描述】:

我很难更改默认的 _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,但是在将其作为 dict 检索时,我想获取图像服务 url。

非常感谢

【问题讨论】:

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


    【解决方案1】:

    我还没有尝试过,但我认为作为_from_base_type钩子会更好:

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

    如果我对documentation 的理解正确,则此API 会“堆叠”,因此您无需在超类(BlobKeyProperty) 上调用_from_base_type。我猜ndbhandles that for you。就个人而言,我认为这对于一个 API 来说有点奇怪,因为 super 似乎可以正常工作......但是......我猜就是这样。

    【讨论】:

      猜你喜欢
      • 2013-08-03
      • 1970-01-01
      • 1970-01-01
      • 2019-07-26
      • 2016-05-15
      • 2011-01-03
      • 2017-08-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多