2013-08-31 8 views
6

SQLAlchemyのドキュメントでは、@ validatesデコレータを使用してモデルにバリデーションを追加する方法を説明しています。2つのフィールドのsqlalchemyバリデータ

私は2つの日付のモデルを持っています。そして、1つの日付が常に2番目の日付より大きいことを保証するバリデーターを作成したいと思います。モデルレベルのバリデーターを作成することは可能ですか?もしそうなら、構文は何ですか?

+0

なぜあなたは一つだけを検証し、それが他の要求事項を満たしていることを確認することができません:、このコードをチェックし

@validates('started_at', 'stopped_at') def do_validation(self, key, field): return field 

してください?例えば。 'assert self.repeat_email == address'またはそれに類するもの? – javex

+0

それはおそらく動作する可能性がありますが、私は初期化中に任意の問題をトラップする必要があります。フィールドごとにいくつかのバリデータを定義し、フィールドが有効な状態を作成するかどうかを判断するために行バリデータを使用することをお勧めします。行の検証を1つの場所で行い、異なるフィールドバリデータ全体に散らばっていないようにすることは、より明確でメンテナンスが容易なように感じます。 – danatron

答えて

8

ここにバリデーターの小さな例があります。

モデルの宣言でCheckConstraintを使用できます。または@validatesデコレータを使用することもできます。しかし、これは最初の引数の各名前に対してSQLAlchemyによって呼び出されます。 https://gist.github.com/matrixise/6417293

+0

ありがとう、それは私が必要としたものです。 – danatron

+2

'started_at'と' stopped_at'が呼ばれる順番はランダムです。 – blurrcat

関連する問題