我正在尝试为具有引用文档中较高字段的依赖项的文档创建一个架构。例如:
document = {
'packages': {
'some-package': {'version': 1}
},
'build-steps': {
'needs-some-package': {'foo': 'bar'},
'other-thing': {'funky': 'stuff'}
}
}
我在这里苦苦挣扎的是强制执行 build-steps.needs-some-package 和 packages.some-package 之间的依赖关系。每当构建步骤包含“needs-some-package”时,包必须包含“some-package”。
当“needs-some-package”不存在时,“some-package”不是必需的。所以这个文件也应该验证。
other_document = {
'packages': {
'other-package': {'version': 1}
},
'build-steps': {
'other-thing': {'funky': 'stuff'}
}
}
在看起来合适的地方具有依赖关系的模式是
schema = {
'packages': {
'type': 'dict',
'valueschema': {
'type': 'dict'
}
},
'build-steps': {
'type': 'dict',
'schema': {
'needs-some-package': {
'type': 'dict',
'dependencies': 'packages.some-package'
},
'other-thing': {
'type': 'dict'
}
}
}
}
但这不起作用,因为似乎 Cerberus 正在“构建步骤”下的子文档中寻找“包”。有没有办法上文档树?或者参考文档根目录的内容?