2010-03-14 3 views
24

이미지 링크가 포함 된 모델을 정의했습니다. 모델 항목 목록에 이미지를 표시하는 방법이 있습니까? 내 모델은 다음과 같습니다.Django : 관리자 인터페이스에 이미지 표시

class Article(models.Model): 
    url = models.CharField(max_length = 200, unique = True) 
    title = models.CharField(max_length = 500) 
    img = models.CharField(max_length = 100) # Contains path to image 

    def __unicode__(self): 
     return u"%s" %title 

제목과 함께 이미지를 표시하는 방법이 있습니까?

답변

57

다른 이름으로 모델 인스턴스 메소드를 작성하고 출력에 HTML 태그를 허용하고이 메소드를 목록 필드로 추가 할 수 있습니다.

class ArticleAdmin(admin.ModelAdmin):  
    ... 
    list_display = ('url', 'title', 'admin_image') 
+0

문제가 발생했습니다. \t가 GET 요청 URL : 당신은/관리/ 'MediaDefiningClass'개체에 pls는 형식 오류를 살펴 수 것은 요청 방법 반복 가능한 아닙니다 \t http://127.0.0.1:8000/admin/ 예외 유형 : \t 형식 오류 예외 값 : \t 지금, –

+1

이 실제로 이전을 고정 반복 가능한이이되지 않는다 'MediaDefiningClass'개체 : 'admin_img'는 호출 또는 .... 확인 –

+0

속성이 아닌, 무시하세요 .. . typo –

1

(내가 사용 장고 :

class Article(models.Model): 
    ... 
    def admin_image(self): 
     return '<img src="%s"/>' % self.img 
    admin_image.allow_tags = True 

가 다음 목록에이 방법을 추가

먼저 이미지 포함에 대한 HTML을 반환하는 새로운 방법을 추가 : 다음은 그 예이다 1.5) 허용 된 대답의 단계를 수행하는 것 외에도 이미지 태그를 "안전"으로 표시해야했습니다.

이렇게하려면 반환 값 w i django.utils.safestring 패키지의 mark_safe 메소드.

코드 예제 : https://stackoverflow.com/a/14075441/1063031

장고 문서 : https://docs.djangoproject.com/en/dev/howto/custom-template-tags/#filters-and-auto-escaping

11
def image_tag(self, obj): 
    return u'<img src="%s" />' % obj.image 

image_tag.short_description = 'Image' 
image_tag.allow_tags = True 

하고 admin.py 추가 기능에 : 당신은 또한 관리자에 직접 이미지를 추가 할 수 있습니다

readonly_fields = ('image_tag',) 
3

class ArticleAdmin(admin.ModelAdmin): 

    def admin_image(self, obj):      
     return '<img src="%s"/>' % obj.img 
    admin_image.allow_tags = True 

    list_display = ('url', 'title', 'admin_image') 
+0

아키텍처를위한 더 나은 솔루션. – SolessChong

관련 문제