2014-01-17 18 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