如何防止Django ModelAdmin剥离空白



所以我在Django ModelAdmin中定义了readonly_fields,它有一个可调用的,看起来像这样:

class TestAdmin(admin.ModelAdmin):
readonly_fields = ("test_field_with_whitespace",)
def test_field_with_whitespace(self, obj):
return '     Hello      World'

在相应的管理视图中,只读字段显示为"Hello World",因此没有空格。

我能做些什么来显示空白区域?

这与modeladmin无关。HTML本身会去除所有空白。如果你需要它精确地显示,那么你需要将它包装在<pre>标记中——由于你现在正在发送HTML,你需要将其标记为安全的,以避免自动转义。

from django.utils.safestring import mark_safe
...
return mark_safe('<pre>     Hello      World</pre>')

接受的答案容易受到js注入攻击。

为了不易受到js注入攻击,最好在管理模型中添加自定义css。实现这一点的一种方法是:

@admin.register(MyModel)
class SomeAdmin(admin.ModelAdmin):
class Media:
css = {
'all': ('css/admin.css',),
}

admin.css文件:

div.readonly {
white-space: pre;
}

最新更新