是否可以在cerberus中将条件设置为空参数



我想为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允许的字段之间的交互只有excludesdependencies。你可以像这样模仿一个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

相关内容

  • 没有找到相关文章

最新更新