Python Cerberus实现两字段至少存在一个的schema定义方法
Python Cerberus 符合需求的校验Schema实现
你需要在校验规则中添加顶层anyof规则限制至少有一个字段存在即可,完整实现代码如下:
from cerberus import Validator schema = { "x": {"type": "integer", "required": False}, "y": {"type": "integer", "required": False}, "anyof": [ {"required": ["x"]}, {"required": ["y"]} ] } v = Validator(schema) print(v.validate({"x": 5})) # 输出 True print(v.validate({"y": 6})) # 输出 True print(v.validate({"x": 5, "y": 6})) # 输出 True print(v.validate({})) # 输出 False
规则说明
- x、y字段本身设置
required: False,允许单个字段不传入 - 顶层
anyof规则要求至少满足其中一个子校验规则:要么传入x字段,要么传入y字段,自然排除了两个字段都不传的非法场景
内容的提问来源于stack exchange,提问作者AnnieFromTaiwan
相关产品推荐
相关产品推荐

