Pydantic: проверка вложенной моделиPython

Программы на Python
Anonymous
Pydantic: проверка вложенной модели

Сообщение Anonymous »


У меня есть вложенная модель в 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) Как я могу убедиться, что внутренняя модель сначала проверена?

Вернуться в «Python»