我正在使用 cerberus 来验证数据。我的一个字段是可选的 - 它不需要每个项目都存在。但是,必须在整个数据数组中至少填充一次键。
例如,假设我想验证密钥是否'c'
出现在我的数据列表中的至少一个字典中:
from cerberus import Validator
has_c = {'data': [{'a': 1, 'b': 2}, {'b': 2}, {'c': 3}]}
no_c = {'data': [{'a': 1, 'b': 2}, {'a': 1}]}
schema = {'data':
{'type': 'list',
'schema': {
'type': 'dict',
'schema': {
'a': {'required': True},
'b': {'required': True},
'c': {'required': False, 'at_least_one': True}
}
}
}
}
class MyValidator(Validator) # Some fancy code...
....
v = MyValidator()
v.validate(has_c, schema) # Passes
v.validate(no_c, schema) # Fails
这在 cerberus 之外似乎是可行的,但如果可能的话,我想将该方法保留在我的验证器中。