2014-01-17 16 views
0

我在Django 1.6中,我想更改管理員以顯示每個型號名稱(在管理員的索引頁上)中的圖標。Django Admin - 如何將圖標放在型號名稱前

問題是我不能改變模板(據我所知),因爲我正在創建一個第三方可安裝的應用程序,並且當用戶安裝它時,他們可能已經擁有了自己的樣式和自定義他們的管理頁面。 (糾正我錯了)。

到目前爲止,我已經試過在models.py這樣做,但它仍然逃脫管理頁面上的HTML:

from django.db import models 
from django.utils.safestring import mark_safe 

class DataConnection(models.Model): 
    class Meta: 
     verbose_name_plural = mark_safe("<img src="..." />My Model") 
    ... 

回答

0

嗯,這似乎工作。我用我的修改後的版本修改admin.site.index和admin.site.app_index方法,獲取響應對象,並添加所需的HTML並將其標記爲安全:

def index(self, *args, **kwargs): 
    response = admin.site.__class__.index(self, *args, **kwargs) 
    my_app_context = [d for d in response.context_data['app_list'] if d.get('app_label','') == u'my_app_name'] 
    if my_app_context: 
     for m in my_app_context[0]['models']: 
      m['name'] = mark_safe(("<img src='...' /> " + unicode(m['name'])) 
    return response 
admin.site.index = index.__get__(admin.site, admin.site.__class__) 

#...Do something similar for the admin.site.app_index method