我有以下模型:
class Foo(DeclarativeBase):
code = Column(u'code', String(length=255))
ctype = Column(u'ctype', String(length=255))
我需要验证一个字段,相对于另一个字段。
例如
if ctype == "bar" and code == "buzz": raise ValueError
不要在提交时在数据库中创建对象和记录。如果没有引发异常,则照常创建。
我试过用。简单的验证器 并尝试使用before_insert 映射器事件设置“before_insert”事件 并编写了这样的代码:
def validate_foo(mapper, connection, target):
if target.ctype == "bar" and target.code == "buzz":
raise ValueError
event.listen(Foo, 'before_insert', validate_foo)
当 ctype == "bar" 和 code == "buzz" 时,它不会在 DB 中创建任何对象。它不会引发任何异常。但它会创建 Foo 对象实例(没有数据库)。
进行此类验证的最佳方法是什么?