[Django] models.ImageFieldで画像表示できない場合

 Djangoのmodels.ImageFieldはそのままの値だと画像表示できるURLになっていません。

 ImageFieldの値は、upload_toで指定したパス + ファイル名となっています。

 表示するには以下のようにMEDIA_URLとくっつける必要があります。この値をtemplateで指定すると表示できます。

from django.conf import settings
from django.db import models

class TestModel(models.Model):
  image = models.ImageField(upload_to="images/")


# この値はupload_to + ファイル名となっている
image_filepath = TestModel.filter(id=<存在するID>).values()[0]["image"]

# この値をテンプレートで使うと画像表示できる
image_url = f"{settings.MEDIA_URL}/{image_filepath}"


"""
こんな感じ
<img src="{{ image_url }}" />
"""

コメントを残す

メールアドレスが公開されることはありません。