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