Pydantic: проверка вложенной модели ⇐ Python
Pydantic: проверка вложенной модели
У меня есть вложенная модель в Pydantic. У меня есть функция root_validator во внешней модели. У меня сложилось впечатление, что если вызывается внешний корневой валидатор, то внутренняя модель действительна. Но, видимо, нет. В следующем MWE я даю неправильное имя поля внутренней модели, но внешний валидатор дает сбой:
при вводе списка импорта из pydantic импорта BaseModel из pydantic.class_validators импортируйте root_validator класс CarList (BaseModel): автомобили: Список[str] цвета: Список[str] класс CarDealership(BaseModel): имя: ул. автомобили: CarList @root_validator() защита check_length(cls, v): cars_list = v.get("автомобили") if len(cars_list.cars) != len(cars_list.colors): поднять ValueError («неправильная длина») вернуть v car_deal = { "легковые автомобили": { "cars1": ["Toyota", "Tesla"], "colors": ["белый", "красный"] } } CarDealership.parse_obj(car_deal) Я получаю следующую ошибку:
Файл «test.py», строка 17, в check_length if len(cars_list.cars) != len(cars_list.colors): AttributeError: объект «NoneType» не имеет атрибута «автомобили». Я ожидал чего-то вроде:
pydantic.error_wrappers.ValidationError: 1 ошибка проверки для CarList легковые автомобили поле обязательно (type=value_error.missing) Как я могу убедиться, что внутренняя модель сначала проверена?
У меня есть вложенная модель в Pydantic. У меня есть функция root_validator во внешней модели. У меня сложилось впечатление, что если вызывается внешний корневой валидатор, то внутренняя модель действительна. Но, видимо, нет. В следующем MWE я даю неправильное имя поля внутренней модели, но внешний валидатор дает сбой:
при вводе списка импорта из pydantic импорта BaseModel из pydantic.class_validators импортируйте root_validator класс CarList (BaseModel): автомобили: Список[str] цвета: Список[str] класс CarDealership(BaseModel): имя: ул. автомобили: CarList @root_validator() защита check_length(cls, v): cars_list = v.get("автомобили") if len(cars_list.cars) != len(cars_list.colors): поднять ValueError («неправильная длина») вернуть v car_deal = { "легковые автомобили": { "cars1": ["Toyota", "Tesla"], "colors": ["белый", "красный"] } } CarDealership.parse_obj(car_deal) Я получаю следующую ошибку:
Файл «test.py», строка 17, в check_length if len(cars_list.cars) != len(cars_list.colors): AttributeError: объект «NoneType» не имеет атрибута «автомобили». Я ожидал чего-то вроде:
pydantic.error_wrappers.ValidationError: 1 ошибка проверки для CarList легковые автомобили поле обязательно (type=value_error.missing) Как я могу убедиться, что внутренняя модель сначала проверена?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение