Вопрос по django, admin, field – Как переопределить отображение значения поля в форме изменения администратора Django
Я хочу переопределить значение, отображаемое для поля в админке Django. Поле содержит XML, и при просмотре его в админке я хочу отформатировать его для удобства чтения. Я знаю, как сделать переформатирование при чтении и записи самого поля, но я не хочу этого делать. Я хочу, чтобы XML хранился с пропущенными пробелами, и я хочу переформатировать его только тогда, когда он просматривается в форме изменения администратора.
Итак, мой вопрос, как я могу контролировать значение, отображаемое в текстовой области формы изменения администратора для этого поля?
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()