我在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")
...
答案 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