我用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之外似乎是可行的,但是如果可能的话,我希望将该方法保存在我的验证器中。在
如果您希望方法在Validator子类中,那么您需要像您所想的那样创建一个自定义规则。在
运行此操作将产生您想要的结果,即在其中一个元素中查找
^{pr2}$c
键。生成正在运行的代码相关问题 更多 >
编程相关推荐