본문으로 바로가기

admin 페이지에서 image 필드를 이미지로 보여주기

category 장고/Admin 관리 2019. 5. 16. 19:17

admin 페이지에서 이미지 필드를 실제 이미지로 보여주는 설정


models.py

class Product(models.Model):
    name = models.CharField(max_length=250)
    image = models.ImageField(upload_to='products', blank=True)
    price = models.PositiveIntegerField()
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

admin.py

  • list_display 리스트에 필드에 주목
    • 모델에서는 image 필드라고 정의했지만 photo_tag() 메서드로 오버라이딩하여 사용
from django.utils.safestring import mark_safe

@admin.register(Product)
class ProductionAdmin(admin.ModelAdmin):
    list_display = ['photo_tag', 'name', 'price']

    list_display_links = ['name']

    def photo_tag(self, item):
        if item.image:
            return mark_safe('<img src={} style="width: 75px;"/>'.format(item.image.url))
        return None