无法将图像上传到 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'>
我正在做电子商务项目,我被困在了这里。每当管理员添加新产品时,它还应该添加与产品相关的图像。所以我添加了带有 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'>