我实现了最近提交的'dependencies': {'attr': 'val'}
支持,但它不适用于我的用例。这就是我想做的事情:
schema = {
'attr1': {'type': 'string', 'required': True, 'allowed': ['Foo', 'Bar']},
'attr2': {'type': 'integer', 'required': True, 'default': 1,
'dependencies': {'attr1': 'Foo'}}
}
object = {
'attr1': 'Bar'
}
当我将object
发布到schema
的端点时,它会失败并显示"attr2": "field 'type' is required with values: Foo"
。如果attr1: 'Foo'
和我的依赖关系一样,我希望它只会失败。
我认为Eve可能会使用架构中指定的默认值attr2
填充1
,这就是为什么它会抛出此错误,但我不确定。
答案 0 :(得分:1)
我刚刚在Cerberus 0.8-dev上试过这个:
from cerberus import Validator
schema = {
'attr1': {'type': 'string', 'required': True, 'allowed': ['Foo', 'Bar']},
'attr2': {'type': 'integer', 'required': True, 'dependencies': {'attr1': 'Foo'}}
}
object = {
'attr1': 'Bar'
}
v = Validator(schema)
v.validate(object)
True
然后我尝试了:
object = {
'attr1': 'Bar',
'attr2': 1
}
v.validate(object)
False
v.errors
{'attr2': "field 'attr1' is required with values: Foo"}
object = {
'attr1': 'Foo',
'attr2': 1
}
v.validate(object)
True
确保你已经在v0.8上了,但是这不能在0.7.2上工作,这是PyPI上现有的版本(这也意味着它在Eve中不可用)直到Cerberus 0.8发布,Eve 0.5更新其Cerberus要求)。