Django Admin - 如何将图标放在模型名称前面

时间:2014-01-17 15:11:46

标签: django django-models django-admin

我在Django 1.6中,我想更改管理员以显示每个模型名称中的图标(在管理员的索引页面上)。

问题是我无法改变模板(据我所知),因为我正在创建第三方可安装的应用程序,当用户安装它时,可能他们可能已经拥有自己的样式和自定义管理页面。 (纠正我,我错了)。

到目前为止,我已尝试在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")
    ...

1 个答案:

答案 0 :(得分: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