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

Класс ConfigDict

Класс ConfigDict применяется внутри Pydantic-модели для настройки её поведения. Он передаётся в атрибут model_config и принимает именованные параметры, такие как extra, frozen, populate_by_name, from_attributes, strict и другие. ConfigDict импортируется из модуля pydantic.

Синтаксис

from pydantic import BaseModel, ConfigDict class Model(BaseModel): model_config = ConfigDict(param=value)

Пример

Давайте запретим передачу лишних полей через параметр extra:

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

При передаче поля email FastAPI вернёт ошибку валидации, так как лишние поля запрещены.

Пример

Давайте сделаем модель неизменяемой с помощью параметра frozen:

<+python+> from fastapi import FastAPI from pydantic import BaseModel, ConfigDict app = FastAPI() class Article(BaseModel): model_config = ConfigDict(frozen=True) title: str text: str @app.post('/article') def create_article(article: Article): return article <-python+>

После создания экземпляра модели изменить поле title уже не получится - Pydantic выбросит исключение.

Пример

Давайте разрешим заполнение по имени поля при наличии алиаса через параметр populate_by_name:

<+python+> from fastapi import FastAPI from pydantic import BaseModel, ConfigDict, Field app = FastAPI() class User(BaseModel): model_config = ConfigDict(populate_by_name=True) username: str = Field(alias='userName') @app.post('/user') def create_user(user: User): return user <-python+>

Теперь в JSON можно передать как userName, так и username - оба варианта будут приняты.

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

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