AttributeError: 'Subject' object has no attribute 'file' when upload file in Django

AttributeError: 'Subject' object has no attribute 'file' when upload file in Django

我正在尝试使用 ImageField 在 Django 中上传文件。我想在上传之前对这个 img 进行哈希处理(使用 ImageHash),并使用哈希文件名保存图像。下面是我的代码,你能帮我解决这个问题吗?

models.py

 from utils import hash_image
 ...
 class: Subject(models.Model):
     photo = models.ImageField(upload_to=hash_image)
 ...

工具

    def hash_image(instance, filename):
        instance.file.open()
        ext = os.path.splitext(filename)[1]
        image_hash = ''
        image_hash = str(imagehash.average_hash(instance.file)) + '.' + ext
        return image_hash

错误:

line 34, in hash_image
        instance.file.open()
    AttributeError: 'Subject' object has no attribute 'file'

你基本上需要一些东西 。并解决您的错误:您的文件是 instance.photo 而不是 instance.file.

但我不确定它是否可以与 imagehash 一起使用,因为 UploadedFile is not a file-like object. In particular Image.Open 要求对象实现 seek() 而 UploadedFile 不会这样做。我在这里看不到构建 Imagehash 可以使用的 Image 对象的方法,但也许其他人可以。