2012-08-13 23 views
6

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

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

+0

あなただけについて話しています間隔や字下げ、または実際に色、サイズなどのスタイルを変更していますか?後者は不可能です。 –

+0

これは私が関心を持っている前者です。ただ、テキストエリアに表示されている値を別の値に置き換えたいだけです。 – gbutler

答えて

13
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() 
+1

それはトリックでした。ありがとう! – gbutler

関連する問題