sqlalchemy两个字段的验证器

时间:2013-08-31 18:07:50

标签: python sqlalchemy

SQLAlchemy文档解释了如何使用@validates装饰器向模型添加验证。

 from sqlalchemy.orm import validates

class EmailAddress(Base):
    __tablename__ = 'address'

    id = Column(Integer, primary_key=True)
    email = Column(String)

    @validates('email')
    def validate_email(self, key, address):
        assert '@' in address
        return address

我有一个有两个日期的模型,我想创建一个验证器,确保一个日期总是大于第二个日期。是否可以创建模型级验证器?如果是这样的语法是什么?

1 个答案:

答案 0 :(得分:8)

这是验证器的一个小例子。

您可以在模型声明中使用CheckConstraint。或者您可以使用@validates装饰器。但SQLAlchemy将为第一个参数中的每个名称调用这个。

@validates('started_at', 'stopped_at')
def do_validation(self, key, field):
    return field

请检查此代码:https://gist.github.com/matrixise/6417293