使用Cerberus,我定义了基于传递给规则的一些参数验证数据(CSV 数据)的自定义规则。请参阅下面从我问的另一个问题的答案中复制的示例规则。
class MyValidator(Validator):
def _validate_custom_parameter_rule(self, rule_parameters, field, value):
""" Test if a field value is set depending on `col_name` field value.
"""
# Validate based on the rule parameters
...
v = MyValidator()
document = {"col1": "a", "col2": ""}
schema = {
"field1": {"required": False},
"field2": {"required": True,
"custom_parameter_rule": {"x": 1},
"custom_parameter_rule": {"y": 2}"
}, # Note that `custom_parameter_rule` is repeated which won't work
}
碰巧的是,在一个字段中,例如上面的字段 2,一个规则可以多次使用,但参数不同。所以在上面的例子中,字段 1 可能依赖于字段 2,字段 1 可能又依赖于字段 3。意思是,我需要通过/运行此规则两次。
问题是 arules_set
只需要 adict
这意味着规则必须是唯一的。所以问题是,我怎样才能多次通过相同的规则。
我注意到文档状态A validation schema is a mapping, usually a dict.
所以想知道,它可以是一个列表,如果是的话,我怎样才能将规则作为一个列表传递?