我想为empty
参数设置条件验证。例如:
schema = {
'param1': {'type': 'string', empty: False, required:True, 'allowed': ['One', 'Two']},
'param2': {'type': 'string', empty: False, required:True}
}
我需要param2
中的empty
参数由条件确定:
如果param1
=="一"=>gt;param2
中的empty
=真else错误
我试过了:'param2': {'type': 'string', empty: {'if': {'param1': 'One'}, 'then': True, 'else': False}, required:True}
但得到错误:[{'empty': ['must be of boolean type']}]
当然,这是因为empty
等待布尔类型。
但是,对于这种选择,是否有一些解决方案?
这并不完全是您想要的,但cerberus允许的字段之间的交互只有excludes
和dependencies
。你可以像这样模仿一个if语句,比如if value == "One" then exclude "param2" else require "param2"
:
"param1": {
"allowed": ["One", "Two"],
"oneof": [
{
"allowed": ["One"], # condition
"excludes": ["param2"] # then rule
},
{
"forbidden": ["One"], # inverse condition
"dependencies": ["param2"] # else rule
}
]
}
从逻辑上讲,模式转换为
给定:p<-param1的值为"0";一";,q<-排除param2,r<-需要param2
则:(p和q(xor(不是p和r(<>如果p则q否则r