更新现有实体的架构时GAE:BadValueError

时间:2011-10-31 20:29:53

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

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

            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。

2 个答案:

答案 0 :(得分:0)

编辑:重写。

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

最初提出的答案为here

答案 1 :(得分:0)

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

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

  smThumb = db.BlobProperty()

请注意sm_thumbnail定义中缺少的parens。如果没有它们,你就不会使sm_thumbnail成为BlobProperty的实例,而是将它作为BlobProperty类的别名。添加丢失的parens,你应该没事。