Попытка установить свойство строки в значение по умолчанию для md5 другой части модели - PullRequest
1 голос
/ 14 сентября 2011

То, что я пытаюсь сделать, это на лету при сохранении изображения в хранилище данных, я хотел бы заполнить запись с md5sum изображения для использования позже при выводе изображения.Я чувствую, что это фиктивная ошибка, которую я просмотрел и не вижу прямо сейчас.

Фрагмент кода:

import hashlib

from google.appengine.api import urlfetch
from google.appengine.ext import db

def getimg(url):
    result = urlfetch.fetch(url)
    if result.status_code == 200:
        return result.content
    else:
        return None

class ImageBlobs(db.Model):
    img = db.BlobProperty(default=None)
    last_update = db.DateTimeProperty(auto_now=True)
    etag = db.StringProperty(default=hashlib.md5(img).hexdigest())

img = ImageBlobs(img=getimg('http://www.a-real-domain.com/a-working-image.png'))
img.put()

Ошибка:

TypeError: must be convertible to a buffer, not BlobProperty

Идеи / предложения о том, что я могу сделать, чтобы решить мою маленькую проблему?

1 Ответ

1 голос
/ 14 сентября 2011

Значения по умолчанию не работают таким образом.Вам нужен DerivedProperty :

@DerivedProperty
def etag(self):
  return hashlib.md5(self.img).hexdigest()
...