Условно обязательные поля в схеме Eve
Я реализовал недавно совершенный 'dependencies': {'attr': 'val'}
поддержка, но она не работает для моего варианта использования. Вот что я хотел бы сделать:
schema = {
'attr1': {'type': 'string', 'required': True, 'allowed': ['Foo', 'Bar']},
'attr2': {'type': 'integer', 'required': True, 'default': 1,
'dependencies': {'attr1': 'Foo'}}
}
object = {
'attr1': 'Bar'
}
Когда я ПОСТ object
до конечной точки с schema
, это не с "attr2": "field 'type' is required with values: Foo"
, Я хочу, чтобы он потерпел неудачу только в том случае, если attr1: 'Foo'
как в моей зависимости диктовать.
Я думаю, что Ева может быть заселена attr2
со значением по умолчанию 1
указано в схеме и поэтому выдает эту ошибку, но я не уверен.
1 ответ
Я только что попробовал это на Цербере 0.8-dev:
from cerberus import Validator
schema = {
'attr1': {'type': 'string', 'required': True, 'allowed': ['Foo', 'Bar']},
'attr2': {'type': 'integer', 'required': True, 'dependencies': {'attr1': 'Foo'}}
}
object = {
'attr1': 'Bar'
}
v = Validator(schema)
v.validate(object)
True
Тогда я попробовал:
object = {
'attr1': 'Bar',
'attr2': 1
}
v.validate(object)
False
v.errors
{'attr2': "field 'attr1' is required with values: Foo"}
object = {
'attr1': 'Foo',
'attr2': 1
}
v.validate(object)
True
Убедитесь, что вы используете v0.8, но это не будет работать на 0.7.2, которая является текущей версией, доступной для PyPI (что также означает, что она не будет доступна в Eve, пока не выйдет Cerberus 0.8 и Eve 0.5 обновлений). его требования Цербера).