尝试将此验证作为可接受的True
,其中任何字段可以是empty: True
(默认情况下我知道),但是当不为空时,必须应用所有顺序条件。
SCHEMA v = Validator()
schm = {'l_addrsch': {'type': 'string', 'empty': True, 'allowed': ['m', 'o', 'e', 'M', 'O', 'E'], 'dependencies': ['l_nrefaddr', 'l_refaddr']},
'l_nrefaddr': {'type': 'integer', 'empty': True, 'dependencies': ['l_addrsch', 'l_refaddr']},
'l_refaddr': {'type': 'integer', 'empty': True, 'dependencies': ['l_addrsch', 'l_nrefaddr']}}
POST val = v.validate(p, schema)
{
"l_addrsch" : "",
"l_nrefaddr" : "",
"l_refaddr" : ""
}
回应
[
{
"l_addrsch": [
"unallowed value "
],
"l_nrefaddr": [
"must be of integer type"
],
"l_refaddr": [
"must be of integer type"
]
}
]
希望我不会太混淆。
编辑1: 在规范化规则'default'时提到了这个:
schema = {'l_addrsch': {'type': 'string', 'default': '', 'allowed': ['', 'm', 'o', 'e', 'M', 'O', 'E'], 'dependencies': ['l_nrefaddr', 'l_refaddr']},
'l_nrefaddr': {'type': 'integer', 'default': 0, 'dependencies': ['l_addrsch', 'l_refaddr']},
'l_refaddr': {'type': 'integer', 'default': 0, 'dependencies': ['l_addrsch', 'l_nrefaddr']}
POST:
{ "l_addrsch" : "",
"l_nrefaddr" : "",
"l_refaddr" : ""}
但似乎我仍然缺少一些让它适用于整数的东西
[
{
"l_nrefaddr": [
"must be of integer type"
],
"l_refaddr": [
"must be of integer type"
]
}
]
答案 0 :(得分:0)
来自doc:
如果
False
,则可迭代值的验证如果为空则将失败。 手动将其设置为True是没有意义的,因为它的行为类似于省略 所有的规则
要设置默认值,请改用规范化规则。 http://docs.python-cerberus.org/en/stable/normalization-rules.html#default-values
这样的事情:
'kind': {'type': 'string', 'default': ''}
答案 1 :(得分:0)