SQLAlchemy声明性模型的数据验证

问题描述 投票:13回答:3

我在Web应用程序中使用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在验证失败时失败?

python validation model sqlalchemy cherrypy
3个回答
14
投票

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


2
投票

我在编写模型数据时,为了避免代码重复的特定目的编写了SAValidation。它对我们很有用,至少对我们的用例来说是这样。

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


-3
投票

毕竟我最终使用了WTForms。

© www.soinside.com 2019 - 2024. All rights reserved.