设置模型的__unicode__以在admin中显示html标签

mho*_*ost 2 django django-admin

在django管理员中,我有一个TabularInline,用于设置了raw_id_fields的ManyToMany字段。它在html输入字段旁边显示对象的unicode()。

我希望它显示一个电子邮件链接。因此,在模型的unicode()函数中,我放入了html标签以创建链接。但是,它正在显示html标签。

有没有办法告诉管理员Unicode安全显示标签?

我尝试使用allow_tags属性,但这似乎只是ModelAdmin属性。

是否可以在不创建新模板的情况下执行此操作?

编辑:

我已经找到了发生的确切位置。在159行中:django / contrib / admin / widgets.py

        return '&nbsp;<strong>%s</strong>' % escape(truncate_words(obj, 14))
Run Code Online (Sandbox Code Playgroud)

那里的逃生是手动转义的。我已经测试了删除escape()的方法。我不喜欢编辑Django源代码的想法。我如何在不更改来源的情况下解决这个问题?

zsq*_*are 5

如果您的目的只是显示列表视图的电子邮件链接,我建议为列表视图编写一个自定义列,如下所示:

list_display = ('admin_email', ...)

def admin_email(self, object):
    return '<a href="%s">%s</a>'%(admin.email, admin)
admin_email.allow_tags = True
admin_email.short_description = 'Send Email'
Run Code Online (Sandbox Code Playgroud)

这样比较好,因为您可能在许多其他地方使用了unicode调用,而html可能会在此处引起问题。