Параметр by_alias
Параметр by_alias применяется к методам кодирования
моделей Pydantic, таким как model_dump и model_dump_json,
а также к функции jsonable_encoder.
Он принимает булево значение и указывает,
подставлять ли псевдоним поля вместо его имени.
Если передать True, ключи в результате будут взяты из alias,
а если False (значение по умолчанию),
то используются настоящие имена полей модели.
Синтаксис
model.model_dump(by_alias=True)
model.model_dump_json(by_alias=True)
jsonable_encoder(model, by_alias=True)
Пример
Давайте создадим модель с полем, имеющим псевдоним,
и сравним вывод с параметром by_alias и без него:
from fastapi import FastAPI
from pydantic import BaseModel, Field
app = FastAPI()
class User(BaseModel):
user_name: str = Field(alias='userName')
@app.get('/user')
def get_user():
user = User(user_name='abcde')
return user.model_dump()
Результат выполнения кода:
{"user_name": "abcde"}
Теперь передадим by_alias=True:
<+python+>
from fastapi import FastAPI
from pydantic import BaseModel, Field
app = FastAPI()
class User(BaseModel):
user_name: str = Field(alias='userName')
@app.get('/user')
def get_user():
user = User(user_name='abcde')
return user.model_dump(by_alias=True)
<-python+>
Результат выполнения кода:
<+python+>
{"userName": "abcde"}
<-python+>
Пример
Давайте применим by_alias в функции jsonable_encoder
для преобразования модели в словарь:
<+python+>
from fastapi import FastAPI
from fastapi.encoders import jsonable_encoder
from pydantic import BaseModel, Field
app = FastAPI()
class Article(BaseModel):
article_title: str = Field(alias='articleTitle')
@app.get('/article')
def get_article():
article = Article(article_title='hello')
res = jsonable_encoder(article, by_alias=True)
return res
<-python+>
Результат выполнения кода:
<+python+>
{"articleTitle": "hello"}
<-python+>
Смотрите также
-
функция
jsonable_encoder,
которая преобразует модели в JSON-совместимые структуры -
параметр
exclude,
который исключает указанные поля из результата -
параметр
exclude_unset,
который пропускает неустановленные поля модели -
параметр
exclude_none,
который исключает поля со значением None