Класс 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:
После создания экземпляра модели изменить поле title
уже не получится - Pydantic выбросит исключение.
Пример
Давайте разрешим заполнение по имени поля при наличии алиаса
через параметр populate_by_name:
Теперь в JSON можно передать как userName,
так и username - оба варианта будут приняты.
Смотрите также
-
класс
BaseModel,
от которого наследуются все Pydantic-модели -
атрибут
model_config,
в который передаётся ConfigDict -
параметр
extra,
который управляет обработкой лишних полей -
параметр
frozen,
который делает модель неизменяемой