如何覆盖Django管理员更改表单中的字段值显示

gbu*_*ler 7 django field admin

我想要覆盖Django管理员中字段显示的值.该字段包含XML,当在管理员中查看它时,我希望对其进行漂亮格式化以便于阅读.我知道如何重新格式化字段本身的读写,但这不是我想要做的.我希望XML存储的空格被剥离,我只想在管理员更改表单中查看时重新格式化它.

所以我的问题是,如何控制此字段的管理员更改表单的textarea中显示的值?

Chr*_*att 16

class MyModelForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(MyModelForm, self).__init__(*args, **kwargs)
        self.initial['some_field'] = some_encoding_method(self.instance.some_field)

class MyModelAdmin(admin.ModelAdmin):
    form = MyModelForm
    ...
Run Code Online (Sandbox Code Playgroud)

在哪里,some_encoding_method您将设置一些东西来确定间距/缩进或您正在借用的其他第三方功能.但是,如果您编写自己的方法,最好将它放在模型本身,然后通过实例调用它:

class MyModel(models.Model):
    ...
    def encode_some_field(self):
        # do something with self.some_field
        return encoded_some_field
Run Code Online (Sandbox Code Playgroud)

然后:

self.instance.encode_some_field()
Run Code Online (Sandbox Code Playgroud)