2012-05-01 8 views
1

データベースに格納されるデータはHTMLです。私はこの事実を変更することはできませんが、私は私のdjango管理サイトでそれを隠したいと思います。データベースからモデルに入れられる前にデータを傍受する必要があります。

データベースにモデルを移入する前に、モデルをキャプチャしてhtmlエンティティをユニコードに変換したいと思います。モデルがデータベースに保存されたら、そのプロセスを逆にしたいと思います。

私は実際にHTMLエンティティからユニコードに変換することができますが、他の方法では丸めることができますが、これを達成するにはDjangoは十分に分かりません。

adminのモデルフォームを調べましたが、データがlist_displayやサイトの他の場所に表示されている場合は機能しません。

ここで、/ howはどのようにこれにつながる最良の方法ですか?

答えて

1

custom fieldには、このフィールドの呼び出し/保存に自動的に必要なものがあります。具体的には、データベースとモデルの変換をto_python、モデルからデータベースへの変換をget_prep_valueに設定します。

これは特に管理者の1つの領域の動作である場合は、ModelAdminにすべて設定することもできます。 list_displayは、出力に必要なものを何でも実行できるreadonlyフィールドを指すことができます。

ピュア管理者:

class ModelAdmin(admin.ModelAdmin): 
    list_display = ('_myfield',) 
    readonly_fields = ('_myfield',) 
    form = MyModelForm # modelform with overriden save() and init 
    # converting values to/from db. 

    def _myfield(self, obj): 
     return whatever_conversion_here(obj.myfield) 
+0

それは、カスタムフィールドを使用するように美しく働きました。 'to_python'と' get_prep_value'に '__metaclass__ = models.SubfieldBase'を正しく設定するようにしてください。 –

+0

@ DavidM.Coe、更新いただきありがとうございます!カスタムフィールドは素晴らしいです!マジック。 –

関連する問題