Bre*_*nik 23 python validation sqlalchemy flask flask-sqlalchemy
我一直在使用sqlalchemy.orm中的@validates装饰器来验证字段,只要所有字段彼此独立,所有字段都很顺利,例如:
@validates('field_one')
def validates_field_one(self, key, value):
#field one validation
@validates('field_two')
def validates_field_two(self, key, value):
#field two validation
Run Code Online (Sandbox Code Playgroud)
但是,现在我需要进行一些验证,这需要同时访问field_one和field_two.看起来验证接受验证装饰器的多个参数,但是,它只会为每个参数运行一次验证函数,如下所示:
@validates('field_one', 'field_two')
def validates_fields(self, keys, values):
#field validation
Run Code Online (Sandbox Code Playgroud)
结果验证field_one的工作流程,然后验证field_two.但是,我想同时验证两者(一个简单的例子是断言field_one的值不是field_two的值,其中一个示例是禁止在图中的自循环,其中field_one和field_two引用节点,它正在边缘上执行验证).如何才能成为最佳方式?
r-m*_*m-n 12
按照在模型上定义的顺序对字段进行排序.然后检查最后一个字段是否是正在验证的字段.否则只返回未选中的值.如果验证器正在验证其中一个早期字段,则其中一些字段尚未设置.
@validates('field_one', 'field_two')
def validates_fields(self, key, value):
if key == 'field_two':
assert self.field_one != value
return value
Run Code Online (Sandbox Code Playgroud)
看这个例子.
归档时间: |
|
查看次数: |
1195 次 |
最近记录: |