2011-01-31 25 views
0

フォームを作成するときに、一連のメソッドを定義して、clean_xyzを指定して、データが正しい形式に強制されるようにすることができます。モデルレベルでこれを行う方法はありますか?Djangoモデルのデータ一貫性

おそらく私はフィールドセッターを何とかオーバーライドできますか?ように私はそれが自動的にA1B 2C3にフォーマットされます

my_address.postal_code = 'a1b2c3' 

のような何かを書く場合、私はそれをしたいです。おそらく、変換できない場合は例外をスローします。そうすれば、私は決してデータベースに不正なデータを持っていることはないことを知っています。

答えて

1

あなたのモデルでsave()をオーバーライドすると助けになるかもしれませんか?ジャンゴ1.2のよう

def save(self, *args, **kwargs): 
    # do your formatting 
    self.postal_code = somefancyformattingmethod() 
    # save it to the database 
    super(YourModel, self).save(*args, **kwargs) 
+0

悪いアプローチではありません。それをセーブすることについて考えなかった。 – mpen

3

a section in the docs that deal with the validation of modelsがあります、私はあなたがModel.clean()で見てください。

+0

ああ...私は彼らがそれを加えたのか分からなかった!フォームのように 'clean_FIELD()'メソッドを持っていません。しかたがない。これで十分です。ありがとう! – mpen

+0

あなたの状況の詳細に応じて、独自のカスタムモデルフィールドを作成し、そこに検証を追加することができます(cf. http://stackoverflow.com/questions/1930469/django-custom-model-field-with-validation-how-to)。 -hook-it-back-to-modelform)を使用します。 – lemonad

関連する問題