1. ホーム
  2. django

[解決済み] Django Admin Imagefield から画像を表示する

2023-05-26 07:03:30

質問

list_display でアップロードした画像を表示することはできますが、これをモデルごとのページ(モデルを変更したときのページ)で行うことは可能でしょうか?

簡単なサンプルモデルは以下の通りです。

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

デフォルトの管理画面では、アップロードされた画像のURLは表示されますが、画像そのものは表示されません。

ありがとうございます。

どのように解決するのですか?

もちろんです。モデルクラスに以下のようなメソッドを追加してください。

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 属性に追加してください。

注意: Django 1.8 で、'image_tag' が readonly_fields にしかない場合、表示されませんでした。 image_tag' が fields にしかない場合、unknown field というエラーが発生しました。 正しく表示させるためには、fields と readonly_fields の両方に入れる必要があります。