2010-03-14 39 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標記並將此方法添加爲列表字段。這裏有一個例子:

首先添加一個新的方法將在返回HTML的圖像包括:

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

則此方法添加到列表:

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

出了問題。你可以看看PLS 類型錯誤在/管理/ 'MediaDefiningClass' 對象不是可迭代 請求方法:\t GET 請求URL:\t http://127.0.0.1:8000/admin/ 異常類型: \t類型錯誤 異常值:\t 「MediaDefiningClass」對象不是可迭代 – 2010-03-15 10:00:01

+1

其實固定前一個,現在有這樣的: 「admin_img」不是一個可調用或.... – 2010-03-15 10:20:24

+0

確定的屬性,請忽略.. 。錯字 – 2010-03-15 10:22:15

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 2017-11-15 05:42:43