如何在Django Admin的模型详情编辑页中显示图片
Django Admin 模型编辑页显示图片解决方案
你之前的写法报错是因为自定义的非模型字段仅添加到fields中时,Django会默认将其识别为可编辑字段,去模型里查找对应字段不存在就会抛出错误,只要补充readonly_fields配置即可,完整实现如下:
第一步:修改admin.py
from django.contrib import admin from django.utils.html import format_html from .models import Label @admin.register(Label) class LabelsAdmin(admin.ModelAdmin): # 把自定义的image字段加入显示列表 fields = ("label", "in_english", "validated", "image") # 标记image为只读字段,这步是必填项 readonly_fields = ("image",) def image(self, obj): # 增加空值判断,避免关联Fragment为空时路径出错 if not obj.fragment: return "暂无关联片段,无法展示图片" # 给图片增加尺寸限制,避免撑破页面布局 return format_html( '<img src="/static/fragments/{}.png" style="max-width:400px;max-height:400px;" />', obj.fragment ) # 自定义字段在页面上显示的标题 image.short_description = "关联片段图片"
其他注意事项
- 如果图片加载失败,先检查Django的
STATIC_URL配置是否正确,对应图片是否确实存放在static/fragments目录下 - 如果需要适配不同部署环境的静态资源路径,可以改用
static模板标签生成路径:导入from django.templatetags.static import static后,图片路径写为static(f'fragments/{obj.fragment}.png')即可
内容的提问来源于stack exchange,提问作者Song Yang
相关产品推荐
相关产品推荐

