0

使用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.所以想知道,它可以是一个列表,如果是的话,我怎样才能将规则作为一个列表传递?

4

0 回答 0