РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
185 of 307 menu

Параметр extra

Параметр extra передаётся в словарь model_config или в класс ConfigDict и определяет, как модель реагирует на дополнительные поля, которых нет среди объявленных атрибутов. По умолчанию Pydantic игнорирует такие поля. Параметр принимает одно из значений: 'allow', 'ignore', 'forbid'. Значение 'allow' сохраняет лишние поля, 'ignore' отбрасывает их, а 'forbid' вызывает ошибку валидации.

Синтаксис

from pydantic import BaseModel, ConfigDict class Model(BaseModel): model_config = ConfigDict(extra='allow')

Пример

Давайте создадим модель со значением 'allow' и передадим лишнее поле:

from fastapi import FastAPI from pydantic import BaseModel, ConfigDict app = FastAPI() class User(BaseModel): model_config = ConfigDict(extra='allow') name: str @app.post('/user') def create_user(user: User): return user

Результат выполнения кода для тела запроса {"name": "abcde", "age": 25}:

{"name": "abcde", "age": 25}

Пример

Давайте создадим модель со значением 'ignore'. Лишнее поле будет молча отброшено:

<+python+> from fastapi import FastAPI from pydantic import BaseModel, ConfigDict app = FastAPI() class User(BaseModel): model_config = ConfigDict(extra='ignore') name: str @app.post('/user') def create_user(user: User): return user <-python+>

Результат выполнения кода для тела запроса {"name": "abcde", "age": 25}:

{"name": "abcde"}

Пример

Давайте создадим модель со значением 'forbid'. Лишнее поле вызовет ошибку валидации:

from fastapi import FastAPI from pydantic import BaseModel, ConfigDict app = FastAPI() class User(BaseModel): model_config = ConfigDict(extra='forbid') name: str @app.post('/user') def create_user(user: User): return user

Результат выполнения кода для тела запроса {"name": "abcde", "age": 25}:

{ "detail": [ { "type": "extra_forbidden", "loc": ["body", "age"], "msg": "Extra inputs are not permitted", "input": 25 } ] }

Смотрите также

  • класс BaseModel,
    который является базой для всех моделей Pydantic
  • класс ConfigDict,
    который хранит настройки модели, включая extra
  • параметр from_attributes,
    который разрешает создание модели из объекта
  • параметр populate_by_name,
    который разрешает заполнение по имени поля
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить