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图片上传回显的主要内容,如果未能解决你的问题,请参考以下文章