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

Атрибут model_config

Атрибут model_config применяется к классу модели, наследующему BaseModel, и принимает словарь с настройками. Через него задаются правила валидации, сериализации и обработки лишних полей. Настройки передаются в виде словаря или объекта ConfigDict.

Синтаксис

class Model(BaseModel): model_config = ConfigDict(param=value)

Пример

Давайте зададим модели настройку extra со значением 'forbid', чтобы запретить передачу лишних полей:

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

Теперь при передаче лишнего поля FastAPI вернет ошибку валидации:

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

Пример

Давайте зададим настройку populate_by_name, чтобы разрешить заполнять поля как по имени, так и по алиасу:

from fastapi import FastAPI from pydantic import BaseModel, ConfigDict, Field app = FastAPI() class Article(BaseModel): model_config = ConfigDict(populate_by_name=True) title: str = Field(alias='article_title') @app.post('/article') def create_article(article: Article): return article

Теперь можно передать поле как по алиасу 'article_title', так и по имени 'title'. Результат выполнения кода:

{"title": "abcde"}

Пример

Давайте зададим настройку frozen, чтобы сделать модель неизменяемой:

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

При попытке изменить поле такого объекта возникнет ошибка. Результат выполнения кода:

ValidationError: Instance is frozen

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

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