Параметр 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,
который включает только указанные поля в вывод