考虑以下架构
schema = {
"value_type":{
"type": "string", "required": True
},
"units": {
"type": "string",
"dependencies": {"value_type": ["float", "integer"]},
"required": True
}
}
我希望仅当字段的值为or时才units
需要该字段。value_type
float
integer
这是我想要实现的行为
v = Validator(schema)
v.validate({"value_type": "float", "units": "mm"}) # 1.
True
v.validate({"value_type": "boolean", "units": "mm"}) # 2.
False
v.validate({"value_type": "float"}) # 3.
False
v.validate({"value_type": "boolean"}) # 4.
True
上述 Schema 仅返回前 3 种情况的预期结果。
如果我将units
(通过省略"required": True
)的定义更改为
"units": {"type": "string", "dependencies": {"value_type": ["float", "integer"]}}
然后验证
v.validate({"value_type": "float"}) # 3.
True
返回True
这不是我想要的。
我查看了文档oneof
中的规则,但找不到仅将其应用于属性的方法。required
我希望 required 的值True
仅在满足依赖项时才存在。
我应该如何修改我的架构来实现这一点?