【问题标题】:GAE: BadValueError while updating the schema of existing entitiesGAE:更新现有实体的架构时出现 BadValueError
【发布时间】:2011-12-19 01:12:14
【问题描述】:

我正在使用此代码来更新现有实体的架构:

            photo = Photo.get_by_id( 334 )
            photo.smThumb = db.BlobProperty()
            photo.mThumb = db.BlobProperty()
            photo.lgThumb = db.BlobProperty()
            photo.put()

            photo.smThumb = photo.sm_thumbnail
            photo.mThumb = photo.lg_thumbnail
            photo.lgThumb = photo.lg_thumbnail
            photo.put()

导致:

BadValueError: Property smThumb must be convertible to a Blob instance (Blob() argument     should be str instance, not BlobProperty)

我该如何解决这个问题?

注意: sm_thumbnail 和 lg_thumbnail 都是 db.BlobProperty() 类型,并且当前具有二进制值(每个都有一张照片)。我正在尝试将这些值复制到新属性 smThumb、mThumb 和 lgThumb。

【问题讨论】:

    标签: database google-app-engine schema database-schema


    【解决方案1】:

    编辑:重写。

    当您访问对象 BlobProperty 字段时,该字段未初始化且对象尚未保存时,可能会出现同样的错误。如果该字段包含任何内容(甚至是空字符串),它将是 Blob 类型。也许您的问题与此有关。

    答案最初呈现在here

    【讨论】:

    • 不正确 - BlobProperty 永远不会返回自身。
    • @NickJohnson 添加了来源,认为它是可靠的并且在这种情况下有效。
    • 那篇文章只是描述了属性的一般工作方式——即使你不初始化它,它也不会返回属性类。
    【解决方案2】:

    你没有向我们展示你的模型,但我猜它看起来像这样:

    class Photo(db.Model):
      sm_thumbnail = db.BlobProperty
      # ...
    
      smThumb = db.BlobProperty()
    

    注意sm_thumbnail 定义中缺少的括号。没有它们,您不会将sm_thumbnail 设为 BlobProperty 的实例,而是将其设为 BlobProperty 类的别名。添加缺少的括号,你应该没问题。

    【讨论】:

      猜你喜欢
      • 2015-03-26
      • 2023-03-09
      • 1970-01-01
      • 2011-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多