GAE: BadValueError при обновлении схемы существующих объектов - PullRequest
0 голосов
/ 01 ноября 2011

Я использую этот код для обновления схемы существующих объектов:

            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)

Как мне это исправить?

note: sm_thumbnail и lg_thumbnail имеют тип db.BlobProperty () и в настоящее время имеют двоичные значения (по фотографии для каждого). Я пытаюсь скопировать эти значения в новые свойства smThumb, mThumb и lgThumb.

Ответы [ 2 ]

0 голосов
/ 01 ноября 2011

Вы не показываете нам свою модель, но я думаю, она выглядит примерно так:

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

  smThumb = db.BlobProperty()

Обратите внимание на отсутствующие скобки в определении sm_thumbnail. Без них вы не делаете sm_thumbnail экземпляром BlobProperty, вы делаете его псевдонимом для класса BlobProperty. Добавьте недостающие символы, и все будет в порядке.

0 голосов
/ 01 ноября 2011

Редактировать: переписать.

Та же ошибка может возникнуть при доступе к полю BlobProperty объектов, когда это поле не инициализировано и объект еще не сохранен.Если поле содержит какой-либо контент (даже пустую строку), он будет иметь тип Blob.Возможно ваша проблема связана с этим.

Ответ изначально представлен здесь .

...