2011-06-20 19 views
9

WebアプリケーションでCherryPy、Makoテンプレート、SQLAlchemyを使用しています。私はRuby on Railsのバックグラウンドから来ています。私は自分のモデルにいくつかのデータ検証を設定しようとしています。他のフィールドに値がある場合、「名前」フィールドに値があることを保証するための最良の方法を理解できません。私はSAValidationを使ってみましたが、列にvalidates_presence_ofを使用しても、必要な列が空白の新しい行を作成することができました。私はWTFormsを見てきましたが、それは重複したコードがたくさん含まれているようです - 私はすでにモデルクラスをテーブルの列に設定しています。 1つの値が必要です "?私は "skinny controller, fat model"の考え方から来て、validates_presence_ofまたはvalidates_length_ofのようなモデルでRailsのようなメソッドを探していました。私のモデルが受け取るデータを検証し、検証が失敗したときにSession.add/Session.mergeが確実に失敗するようにするにはどうすればよいですか?SQLAlchemy宣言型モデルのデータ検証

答えて

-4

結局、私はWTFormsを使用してしまいました。

+0

コードの重複はどうでしたか?どのように使用しているのか少し説明できますか?私もレール開発者ですが、フラスコ+ sqlalchemyでアプリケーションを開発しようとしています...私はWTFormsを見たことがありますが、あなたは常にビューにバリデーションを保存しているという点で、それをモデルに格納するためには、より有効な(そしてより乾いた)感じがします。 – jbwiv

10

validation methodsを追加するためのドキュメントをご覧ください。 POST dictを取り、必要なキーが存在することを確認し、装飾されたバリデーターを使って値を設定します(何か不具合があった場合にエラーを発生させる) "update"メソッドを追加することができます。

+1

検証メソッドは、一度に1つのフィールドに対してのみ機能します。彼は明らかにフィールド間の関係に依存する検証を意味します。 –

2

モデルデータの検証時にコードの重複を避けるために、私はSAValidationを書いています。少なくとも私たちのユースケースについては、私たちのためにうまくいきます。

私たちのテストでは、examples of the model's setupと検証作業を示すテストがあります。

関連する問題