Вопрос по django, admin, field – Как переопределить отображение значения поля в форме изменения администратора Django

6

Я хочу переопределить значение, отображаемое для поля в админке Django. Поле содержит XML, и при просмотре его в админке я хочу отформатировать его для удобства чтения. Я знаю, как сделать переформатирование при чтении и записи самого поля, но я не хочу этого делать. Я хочу, чтобы XML хранился с пропущенными пробелами, и я хочу переформатировать его только тогда, когда он просматривается в форме изменения администратора.

Итак, мой вопрос, как я могу контролировать значение, отображаемое в текстовой области формы изменения администратора для этого поля?

Вы просто говорите о расстоянии и отступах, или о фактическом изменении стилей, таких как цвет, размер и т.д.? Последнее невозможно. Chris Pratt
Это первое, что меня интересует. Я просто хочу заменить значение, отображаемое в текстовой области, другим значением. gbutler

Ваш Ответ

1   ответ
15
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()
Это добилось цели. Спасибо! gbutler

Похожие вопросы