尝试将字符串属性设置为模型另一部分的 md5 的默认值

发布于 2024-12-04 17:29:44 字数 775 浏览 1 评论 0原文

我想做的是在将图像存储到数据存储时即时执行,我想用图像的 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

关于如何解决我的小问题的想法/建议?

What I am trying to do is on the fly when storing an image to the datastore, I would like to fill in a entry with the md5sum of the image for use later when outputting the image. I feel like it is a dummy error that I have over looked and just cant see right now.

Code snippet:

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()

The error:

TypeError: must be convertible to a buffer, not BlobProperty

Ideas/Suggestions on what I can do to solve my little problem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

述情 2024-12-11 17:29:44

默认值不是这样工作的。您需要一个 DerivedProperty

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

Defaults don't work that way. You need a DerivedProperty:

@DerivedProperty
def etag(self):
  return hashlib.md5(self.img).hexdigest()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文