【发布时间】:2019-05-27 02:40:21
【问题描述】:
假设我们有一个带有BinaryField 的模型:
from django.db import models
import hashlib
class Target(models.Model):
# ...
image = models.BinaryField(max_length=(1<<24)-1)
# ...
def __str__(self):
return hashlib.md5().update(self.image).hexdigest()
上述代码是否正确计算了图像的 MD5 摘要?
或者BinaryField 内部是否有一些方法或变量来获取内存以传递给update() 方法?
更新:当我尝试时:
>>> from pathlib import Path
>>> t = Target(image=Path('../../Experiments/LoginError2.jpg').read_bytes())
>>> t
我收到以下错误:
AttributeError: 'NoneType' object has no attribute 'hexdigest'
那我做错了什么?
【问题讨论】:
-
那么当你尝试这个时发生了什么? (您至少必须使用
self.image才能访问该值) -
A
BinaryField与IntField或StringField没有区别,访问它以获取值。 -
@MartijnPieters,我刚开始用 Python 编程,所以我觉得很难尝试,因为我还没有实现上传图片的方法。
-
@SergeRogatch 你可以写一个小号test 来一探究竟。或者您甚至可以使用
manage.py shell创建模型来测试行为。 -
我已经用我尝试加载图像时发生的结果更新了我的问题。
标签: python django memory hash binary