如何重写Django管理变革表单字段值显示(How to override field value

2019-06-27 01:03发布

我想重写显示在Django管理一个字段的值。 该字段包含XML和管理员查看时,我想漂亮格式以方便日后的可读性。 我知道该怎么做重新格式化上读取和领域本身的写入,但是这不是我想做的事情。 我想用存储的空白XML剥离,我只需要对其进行格式化,当它在管理变化的形式观看。

所以我的问题是,我怎么能控制的管理变化形式这一领域的textarea的显示值?

Answer 1:

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
    ...

其中, some_encoding_method会是这样你设置了确定的间距/压痕或您借用一些其他的第三方功能。 但是,如果你写你自己的方法,倒不如把它放在模型本身,然后调用它通过实例:

class MyModel(models.Model):
    ...
    def encode_some_field(self):
        # do something with self.some_field
        return encoded_some_field

然后:

self.instance.encode_some_field()


文章来源: How to override field value display in Django admin change form