Параметр exclude_none
Параметр exclude_none применяется к методам сериализации моделей Pydantic,
а также к параметрам ответа в FastAPI.
Он указывает, нужно ли исключать из результата поля,
значение которых равно None.
Если параметр равен True, такие поля не попадают в итоговый словарь или JSON.
Если False, поля сохраняются со значением None.
Параметр может передаваться в методы model_dump,
model_dump_json, а также в аргумент response_model_exclude_none
декораторов FastAPI.
Синтаксис
model_dump(exclude_none=True)
model_dump_json(exclude_none=True)
@app.get(path, response_model_exclude_none=True)
Пример
Давайте создадим модель Pydantic с полем,
которое может быть равно None,
и вызовем model_dump с параметром 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'}
Пример
Если передать exclude_none=False,
поле со значением None останется в результате:
from pydantic import BaseModel
class User(BaseModel):
name: str
age: int | None = None
user = User(name='abcde')
res = user.model_dump(exclude_none=False)
print(res)
Результат выполнения кода:
{'name': 'abcde', 'age': None}
Пример
Давайте применим response_model_exclude_none в маршруте FastAPI,
чтобы исключить None-поля из ответа:
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class User(BaseModel):
name: str
age: int | None = None
@app.get('/user', response_model=User, response_model_exclude_none=True)
def get_user():
return User(name='abcde')
Результат выполнения кода для адреса /user:
{"name": "abcde"}
Смотрите также
-
параметр
exclude_unset,
который исключает поля, не заданные при создании модели -
параметр
exclude_defaults,
который исключает поля со значениями по умолчанию -
параметр
exclude,
который исключает указанные поля из результата -
функция
jsonable_encoder,
которая преобразует модели в JSON-совместимые структуры