我在Web应用程序中使用CherryPy,Mako模板和SQLAlchemy。我来自Ruby on Rails背景,我正在尝试为我的模型设置一些数据验证。我无法找出确保“名称”字段在某个其他字段具有值时具有值的最佳方法。我尝试使用SAValidation,但它允许我创建新行,其中所需的列为空,即使我在列上使用validates_presence_of
。我一直在看WTForms,但这似乎涉及很多重复的代码 - 我已经在表格中设置了我的模型类,为什么我需要再次重复所有这些列只是为了说“嘿这个一个人需要一个价值“?我来自“skinny controller, fat model”的心态,并且一直在我的模型中寻找类似Rails的方法,如validates_presence_of
或validates_length_of
。我应该如何验证我的模型收到的数据,并确保Session.add
/ Session.merge
在验证失败时失败?
看一下添加validation methods的文档。您可以添加一个“更新”方法,该方法接受POST dict,确保存在所需的键,并使用修饰的验证器设置值(如果出现任何错误则引发错误)。
我在编写模型数据时,为了避免代码重复的特定目的编写了SAValidation。它对我们很有用,至少对我们的用例来说是这样。
在我们的测试中,我们有examples of the model's setup和测试来显示验证工作。
毕竟我最终使用了WTForms。