我尝试在Django Admin的**"更改列表"页面**显示上传的图片:
这是我的代码如下:
# "models.py"
from django.db import models
class Product(models.Model):
name = models.CharField(max_length=50)
price = models.DecimalField(decimal_places=2, max_digits=5)
image = models.ImageField()
def __str__(self):
return self.name
# "admin.py"
from django.contrib import admin
from .models import Product
@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
list_display = ('name', 'price', 'image',)
那么,我怎样才能在Django Admin的**"Change List"页面**显示上传的图片呢?
9条答案
按热度按时间8wigbo561#
您可以使用其他名称创建模型示例方法,允许HTML标记用于其输出,并将此方法添加为列表字段。以下是一个示例:
首先添加一个新方法,返回包含图像的HTML:
然后将此方法添加到列表中:
a7qyws3x2#
2020年更新
因为这个答案最近得到了很多关注,我决定做一个小的编辑。根据django文档,建议使用函数format_html。正如@chem1st建议的,如果你只需要它来管理,所有的东西都可以在admin.py中完成。
我的models.py
我的admin.py
更新django 2.0.6
我在最新的django2.0.6中解决了这个问题。我想在django-admin中有一个列表视图中的图像缩略图。
下面的图片是我的默认管理员列表视图。
这是我的小精灵
请注意,我必须对图像字符串使用mark_safe(),否则您将在django-admin中得到转义的html代码,而不是缩略图
终于,这是我的
admin.py
在这里,我们还必须注册ProductAdmin类,我不知道这一点,它不起作用。
这是结果:
btxsgosb3#
并在www.example.com中admin.py添加:
hc2pp10m4#
你也可以直接在管理中添加镜像
ct3nt3jp5#
(我使用Django 1.5)除了按照公认答案中的步骤操作外,我还必须将图像标记为“安全”
为此,用django.utils.safestring包的mark_safe方法 Package 返回值。
代码示例:https://stackoverflow.com/a/14075441/1063031
Django文档:https://docs.djangoproject.com/en/dev/howto/custom-template-tags/#filters-and-auto-escaping
2wnc66cl6#
你可以为你的模型覆盖django管理视图,更多细节请访问http://docs.djangoproject.com/en/dev/ref/contrib/admin/#overriding-admin-templates。
简而言之,您需要创建一个模板:templates/admin/your_app/article/change_form. html然后添加html来显示图像。
r1zhe5dt7#
根据@TomRavn的评论,mark_safe对我有效。
https://docs.djangoproject.com/en/3.1/ref/utils/#module-django.utils.html
eanckbw98#
models.py
admin.py
bwitn5fc9#
您需要使用
image_tag()
创建**image_tag
列**,然后将其分配给list_display,如下所示:然后,您可以在Django Admin的**“Change List”页面**显示上传的图片,如下所示:
您也可以在Django Admin的**“Change”页面**中看到我的回答,解释如何显示上传的图像。