无法将图像上传到 Django Admin

Cant Upload Images to Django Admin

我正在做电子商务项目,我被困在了这里。每当管理员添加新产品时,它还应该添加与产品相关的图像。所以我添加了带有 ImageField 的列,但我一次又一次地收到错误。这是我的模型代码

class Product(models.Model):
    product_id = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=100, blank=True, null=True)
    image = models.ImageField(db_column='image' , blank=True, null=True)
    info = models.CharField(max_length=500, blank=True, null=True)
    
    def image_tag(self):
        if self.image:
            return mark_safe('<img src="%s"/>' % self.image.url)
        else:
            return 'No Image Found'
    image_tag.short_description = 'Image'

并在 admin.py

class ProductAdmin(admin.ModelAdmin):
    list_display = ('product_id', 'name','image_tag', 'info')
    readonly_fields = ('image',)

admin.site.register(Product, ProductAdmin)

但是每次我都收到这个错误

Exception Type: AttributeError
Exception Value:'bytes' object has no attribute 'url'

我尝试使用转义,但它仍然没有显示 images.I 我正在使用 MySQL 现有数据库。我真的需要帮助。谢谢

目前您将图像以字节形式存储在数据库中,Django 不喜欢这种方式,您应该首先指定 MEDIA_ROOT 这是将保存图像的文件夹,只有 URL保存在数据库中。文档 [SOURCE]

我假设您已经设置了 MEDIA 设置并安装了 Pillow。 您的 ImageField 看起来像

# No need to specify db_column as Django already stores by default field's name.
image = models.ImageField(upload_to='users/%Y/%m/%d/', blank=True, null=True)

现在在您的模板中,您可以通过以下方式获取图像,

<img src="http://127.0.0.1:8000/media/{{ profile.photo }}" id='profile-photo'>