Google App Engine递归ndb.StructuredProperty

时间:2017-04-21 12:52:01

标签: python google-app-engine datastore

我正在使用Google App Engine进行后端开发,而我正在使用数据存储模型和Google云端存储来存储我的图像对象。所以这是我的媒体模型

class Media(ndb.Model):

    url = ndb.StringProperty(indexed=False)  # url generated by images.get_serving_url
    path = ndb.StringProperty(indexed=False)  # path in GCP
    width = ndb.IntegerProperty(indexed=False)
    height = ndb.IntegerProperty(indexed=False)
    size = ndb.IntegerProperty()
    created = ndb.DateTimeProperty(auto_now_add=True)

现在我还想上传图片缩略图并将其存储在同一个实体中。所以我想要的是像

class Media(ndb.Model):
    ...

    thumnail = ndb.LocalStructuredProperty(Media)

但Python不允许我使用self类作为class属性的参数,而GAE不允许将模型名称作为modelclass的{​​{1}}参数。

我想知道,有没有办法避免这种限制,比如延迟初始化或类似的东西?

1 个答案:

答案 0 :(得分:1)

您可以这样做:

class Media(ndb.Model):
    url = ndb.StringProperty(indexed=False)
    path = ndb.StringProperty(indexed=False)
    width = ndb.IntegerProperty(indexed=False)
    height = ndb.IntegerProperty(indexed=False)
    size = ndb.IntegerProperty()
    created = ndb.DateTimeProperty(auto_now_add=True)

class Thumbnail(Media):
    pass

class FullSize(Media):
    thumbnail = ndb.LocalStructuredProperty(Thumbnail)