Метод model_dump
Метод model_dump применяется к экземпляру модели
BaseModel и возвращает представление данных
в виде словаря Python. Первым параметром передаётся
режим сериализации mode - 'python'
или 'json'. Также доступны параметры
include, exclude, by_alias,
exclude_unset, exclude_defaults
и exclude_none, которые управляют набором
полей в результирующем словаре.
Синтаксис
model.model_dump(
mode='python',
include=None,
exclude=None,
by_alias=False,
exclude_unset=False,
exclude_defaults=False,
exclude_none=False,
)
Пример
Давайте создадим модель User и получим её данные
в виде словаря:
from pydantic import BaseModel
class User(BaseModel):
name: str
age: int
user = User(name='abcde', age=25)
res = user.model_dump()
print(res)
Результат выполнения кода:
{'name': 'abcde', 'age': 25}
Пример
Давайте исключим поле age из результата
с помощью параметра exclude:
from pydantic import BaseModel
class User(BaseModel):
name: str
age: int
user = User(name='abcde', age=25)
res = user.model_dump(exclude={'age'})
print(res)
Результат выполнения кода:
{'name': 'abcde'}
Пример
Давайте включим в результат только поле name
с помощью параметра include:
from pydantic import BaseModel
class User(BaseModel):
name: str
age: int
user = User(name='abcde', age=25)
res = user.model_dump(include={'name'})
print(res)
Результат выполнения кода:
{'name': 'abcde'}
Пример
Давайте используем псевдонимы полей через
параметр by_alias:
from pydantic import BaseModel, Field
class User(BaseModel):
name: str = Field(alias='userName')
age: int
user = User(userName='abcde', age=25)
res = user.model_dump(by_alias=True)
print(res)
Результат выполнения кода:
{'userName': 'abcde', 'age': 25}
Пример
Давайте исключим поля, которые не были заданы
явно, с помощью параметра exclude_unset:
from pydantic import BaseModel
class User(BaseModel):
name: str
age: int = 18
user = User(name='abcde')
res = user.model_dump(exclude_unset=True)
print(res)
Результат выполнения кода:
{'name': 'abcde'}
Пример
Давайте исключим поля со значением None
с помощью параметра exclude_none:
from pydantic import BaseModel
class User(BaseModel):
name: str
age: int | None = None
user = User(name='abcde')
res = user.model_dump(exclude_none=True)
print(res)
Результат выполнения кода:
{'name': 'abcde'}
Пример
Давайте вернём данные в режиме JSON с помощью
параметра mode:
from datetime import datetime
from pydantic import BaseModel
class Event(BaseModel):
title: str
created: datetime
event = Event(title='article', created=datetime(2024, 1, 1))
res = event.model_dump(mode='json')
print(res)
Результат выполнения кода:
{'title': 'article', 'created': '2024-01-01T00:00:00'}
Смотрите также
-
метод
model_dump_json,
который возвращает JSON-строку с данными модели -
метод
model_validate,
который создаёт модель из словаря или объекта -
класс
BaseModel,
который является базовым классом всех моделей Pydantic -
метод
model_copy,
который создаёт копию модели с изменёнными полями