django admin图片上传回显

Posted Jason_WangYing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django admin图片上传回显相关的知识,希望对你有一定的参考价值。

这个问题其实就是compute字段如何显示在django admin的编辑表单中。由于django admin默认只会显示model中editable=true的属性,所以计算字段需要特殊处理。

最开始是在model中直接定义了一个自定义方法属性image_data。

class Product(models.Model):
    # ... other fields
    image = models.ImageField(u'图片', upload_to='photos/%Y/%m/%d')
    def image_data(self, obj):
        return mark_safe(u'< img src="%s" width="100px" />' % obj.image.url)
    # 页面显示的字段名称
    image_data.short_description = u'品牌图片'

# 在admin.py中定义模型对应的admin展示方式
class ProductAdmin(admin.ModelAdmin):
    list_display = ('name', 'image_data')
    readonly_fields = ('image_data',)  #必须加这行 否则访问编辑页面会报错

以上这种方式可以在列表中正常显示上传的图片,但是在编辑表单中图片对应的字段只会显示一个label,内容不会显示出来。

经过google找到解决办法:

class Product(models.Model):
    # ... other fields
    image = models.ImageField(u'图片', upload_to='photos/%Y/%m/%d')

# 在admin.py中定义模型对应的admin展示方式
from django.utils.safestring import mark_safe
class ProductAdmin(admin.ModelAdmin):
    list_display = ('name', 'image_data')
    readonly_fields = ('image_data',)  #必须加这行 否则访问编辑页面会报错
    def image_data(self, obj):
        return mark_safe(u'<img src="%s" width="100px" />' % obj.image.url)
    # 页面显示的字段名称
    image_data.short_description = u'品牌图片'

看到这里应该清楚了吧,其实很简单只要将model中的自定义方法字段移到modelAdmin中即可。。

以上是关于django admin图片上传回显的主要内容,如果未能解决你的问题,请参考以下文章

django图片上传

Django 后台上传以及显示图片

wangEditor2版本 上传图片成功 回显失败处理

Ajax简单异步上传图片并回显

百度WebUploader上传图片,图片回显编辑,查看

SpringBoot vue图片上传不能立即回显问题解决