如何防止 Django ModelAdmin 去除空格?

How to prevent Django ModelAdmin from stripping whitespaces?

所以我在 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;
}