Параметр exclude
Параметр exclude применяется в методах сериализации
моделей Pydantic и в функции jsonable_encoder.
Он принимает множество имён полей, которые нужно исключить
из итогового словаря. Это удобно, когда требуется скрыть
от клиента конфиденциальные данные, например пароль или
внутренние идентификаторы.
Параметр можно передавать напрямую в метод model_dump
или через аргумент response_model_exclude в декораторах
маршрутов FastAPI.
Синтаксис
model.model_dump(exclude={'field1', 'field2'})
Пример
Давайте создадим модель пользователя и исключим поле
password при сериализации:
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class User(BaseModel):
name: str
password: str
@app.get('/user')
def get_user():
user = User(name='abcde', password='secret')
return user.model_dump(exclude={'password'})
Результат выполнения кода:
{"name": "abcde"}
Пример
Давайте исключим поле через параметр response_model_exclude
в декораторе маршрута:
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class User(BaseModel):
name: str
password: str
@app.get('/user', response_model=User, response_model_exclude={'password'})
def get_user():
return User(name='abcde', password='secret')
Результат выполнения кода:
{"name": "abcde"}
Пример
Давайте исключим несколько полей сразу, передав множество из двух элементов:
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class User(BaseModel):
name: str
email: str
password: str
@app.get('/user')
def get_user():
user = User(name='abcde', email='user@example.com', password='secret')
return user.model_dump(exclude={'email', 'password'})
Результат выполнения кода:
{"name": "abcde"}
Смотрите также
-
параметр
include,
который включает только указанные поля в результат -
параметр
exclude_unset,
который исключает поля, не заданные при создании модели -
параметр
exclude_none,
который исключает поля со значением None -
функция
jsonable_encoder,
которая преобразует объекты в JSON-совместимый формат