一尘不染

Django Admin从Imagefield显示图像

django

虽然我可以在list_display中显示上载的图像,但是是否可以在每个模型页面上执行此操作(就像在更改模型时获得的页面一样)?

快速样本模型为:

Class Model1(models.Model):
    image = models.ImageField(upload_to=directory)

默认管理员显示上传图像的URL,但不显示图像本身。


阅读 651

收藏
2020-03-26

共1个答案

一尘不染

当然。在模型类中,添加类似以下方法:

def image_tag(self):
    from django.utils.html import escape
    return u'<img src="%s" />' % escape(<URL to the image>)
image_tag.short_description = 'Image'
image_tag.allow_tags = True

并在你的admin.py添加:

fields = ( 'image_tag', )
readonly_fields = ('image_tag',)

给你ModelAdmin。如果要限制编辑图像字段的能力,请确保将其添加到exclude属性。

注意:仅在readonly_fields中使用Django 1.8和’image_tag’时,它不会显示。仅在字段中使用“ image_tag”,它给出了未知字段的错误。为了正确显示,在字段和readonly_fields中都需要它。

2020-03-26