我使用Cerberus定义了自定义规则,该规则基于传递给规则的某些参数来验证数据(CSV数据)。请参见下面复制from an answer in another question I'd asked的示例规则。
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
}
碰巧在一个字段中,例如上面的field2,一个规则可以使用多次,但是参数不同。因此,在上面的示例中,字段1可能取决于字段2,字段1可能再次取决于字段3。这意味着,我需要两次通过/运行此规则。
问题是rules_set
仅接受dict
,这意味着规则必须唯一。所以问题是,如何才能多次通过同一条规则。
我注意到文档中的状态为A validation schema is a mapping, usually a dict.
,所以我想知道它是否可以是列表,如果可以,我如何将规则作为列表传递?