ドキュメントの上位のフィールドを参照する依存関係を持つドキュメントのスキーマを作成しようとしています。例えば:
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 が「build-steps」の下のサブドキュメント内で「パッケージ」を探しているように見えるため、これは機能しません。ドキュメント ツリーを上に移動する方法はありますか? または、ドキュメントのルートに関して何かを参照するには?