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

Параметр exclude_unset

Параметр exclude_unset применяется в методах сериализации моделей Pydantic, таких как model_dump и model_dump_json, а также в параметрах ответа FastAPI. Когда он установлен в True, в результат попадают только те поля, которые были явно установлены при создании модели. Поля, получившие значения по умолчанию и не переданные явно, исключаются из вывода.

Синтаксис

model.model_dump(exclude_unset=True)

Пример

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

from pydantic import BaseModel class User(BaseModel): name: str = 'guest' age: int = 0 city: str = 'unknown' user = User(name='abcde') res = user.model_dump(exclude_unset=True) print(res)

Результат выполнения кода:

{'name': 'abcde'}

Как видно, в результат попало только поле name, которое было установлено явно. Поля age и city исключены, так как остались со значениями по умолчанию.

Пример

Давайте сравним поведение с exclude_unset=False:

from pydantic import BaseModel class User(BaseModel): name: str = 'guest' age: int = 0 city: str = 'unknown' user = User(name='abcde') res1 = user.model_dump(exclude_unset=True) res2 = user.model_dump(exclude_unset=False) print(res1) print(res2)

Результат выполнения кода:

{'name': 'abcde'} {'name': 'abcde', 'age': 0, 'city': 'unknown'}

Пример

Давайте применим exclude_unset в маршруте FastAPI для частичного обновления данных:

from fastapi import FastAPI from pydantic import BaseModel app = FastAPI() class User(BaseModel): name: str = 'guest' age: int = 0 city: str = 'unknown' @app.post('/user') def create_user(user: User): return user.model_dump(exclude_unset=True)

Отправим POST-запрос с телом, содержащим только поле name:

curl -X POST http://localhost:8000/user -H "Content-Type: application/json" -d '{"name": "abcde"}'

Результат выполнения запроса:

{"name": "abcde"}

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

  • параметр exclude,
    который исключает указанные поля из вывода
  • параметр exclude_defaults,
    который исключает поля со значениями по умолчанию
  • параметр exclude_none,
    который исключает поля со значением None
  • параметр include,
    который включает только указанные поля в вывод
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить