10

Django管理者のフィールドに表示される値を上書きするにはどうすればよいですか?このフィールドにはXMLが含まれており、管理者で表示するときに、読みやすくするためにきれいにフォーマットしたいと思います。フィールド自体の読み取りと書き込みで再フォーマットを行う方法は知っていますが、これは私がやりたいことではありません。空白を削除してXMLを保存し、管理者変更フォームで表示されたときにのみ再フォーマットしたい。

このフィールドの管理者変更フォームのテキストエリアに表示される値を制御するにはどうすればよいですか?

4

1 に答える 1

17
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()
于 2012-08-13T21:59:47.303 に答える