0
私はケルベロスを使って、type
とdata
フィールドを持つペイロードを検証しています。 type
(test
またはbuild
)の値に応じて、異なる制約に対してdata
を検証したいと思います。 Cerberusの別のフィールドの値に応じて、スキーマに対してフィールドを検証するにはどうすればよいですか?
>>> validator = cerberus.Validator(schemas.abstract_task)
>>> validator.validate({
... "type": "build",
... "data": {"environment": "staging"}})
>>> pp validator.errors
{'data': {'anyof': 'no definitions validated',
'definition 0': {'environment': 'unknown field',
'folder': 'required field'},
'definition 1': {'environment': 'unallowed value bad'}}}
は条件付きで使用する方法があります:意図したサブスキーマが失敗したとき
test_task = {"folder": {"required": True}}
build_task = {"environment": {"allowed": ["staging", "product"]}}
abstract_task = {'type': {'allowed': ['test', 'build']},
'data': {'type': 'dict',
'required': True,
'anyof': [{'schema': test_task},
{'schema': build_task}]}}
しかし、他に関するエラーが報告されます。
はこれまでのところ、私は、このセットアップを肝炎definition 1
兄弟type
の値がbuild
の場合は?
この質問はthis issueに由来しています。