Параметр exclude_defaults
Параметр exclude_defaults применяется в методах сериализации
FastAPI, таких как model_dump и model_dump_json,
а также в параметрах маршрутов response_model_exclude_defaults.
Он принимает булево значение и указывает,
нужно ли исключать из результата поля модели,
значения которых равны значениям по умолчанию.
Если параметр равен True, такие поля не попадают в результат.
По умолчанию параметр равен False.
Синтаксис
model_dump(exclude_defaults=True)
Пример
Давайте создадим модель с полем, имеющим значение по умолчанию, и сравним результат сериализации с параметром и без него:
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class User(BaseModel):
name: str
age: int = 18
@app.get('/user')
def get_user():
user = User(name='abcde')
res = user.model_dump()
return res
Результат выполнения кода:
{"name": "abcde", "age": 18}
Теперь применим параметр exclude_defaults:
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class User(BaseModel):
name: str
age: int = 18
@app.get('/user')
def get_user():
user = User(name='abcde')
res = user.model_dump(exclude_defaults=True)
return res
Результат выполнения кода:
{"name": "abcde"}
Пример
Давайте используем параметр response_model_exclude_defaults
в декораторе маршрута, чтобы FastAPI автоматически
исключал поля со значениями по умолчанию из ответа:
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class User(BaseModel):
name: str
age: int = 18
city: str = 'user'
@app.get('/user', response_model=User, response_model_exclude_defaults=True)
def get_user():
return User(name='abcde', age=25)
Результат выполнения кода:
{"name": "abcde", "age": 25}
Поле city со значением по умолчанию 'user'
не попало в ответ, так как оно не было задано явно.
Смотрите также
-
параметр
exclude_unset,
который исключает неустановленные поля -
параметр
exclude_none,
который исключает поля со значением None -
параметр
exclude,
который исключает указанные поля из результата -
параметр
include,
который включает только указанные поля в результат