SQLAlchemy声明性模型的数据验证

时间:2011-06-20 18:58:43

标签: python validation model sqlalchemy cherrypy

我在网络应用中使用CherryPy,Mako模板和SQLAlchemy。我来自Ruby on Rails背景,我正在尝试为我的模型设置一些数据验证。我无法找出确保“名称”字段在某个其他字段具有值时具有值的最佳方法。我尝试使用SAValidation,但它允许我创建新行,其中所需的列为空,即使我在列上使用validates_presence_of也是如此。我一直在看WTForms,但这似乎涉及很多重复的代码 - 我已经使用表中的列设置了我的模型类,为什么我需要再次重复所有这些列说“嘿,这个人需要一个价值”?我来自“skinny controller, fat model”心态,一直在我的模型中寻找类似Rails的方法,如validates_presence_ofvalidates_length_of。我应该如何验证模型收到的数据,并确保Session.add / Session.merge在验证失败时失败?

3 个答案:

答案 0 :(得分:14)

查看添加validation methods的文档。您可以添加一个“更新”方法,该方法接受POST字典,确保存在所需的键,并使用修饰的验证器设置值(如果出现任何错误则引发错误)。

答案 1 :(得分:2)

我写了SAValidation,其目的是在验证模型数据时避免代码重复。它对我们很有用,至少对我们的用例来说很好。

在我们的测试中,我们有examples of the model's setup和测试以显示验证工作。

答案 2 :(得分:-3)

毕竟我最终使用了WTForms。