我正在使用此代码更新现有实体的架构:
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。
答案 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,你应该没事。