Код: Выделить всё
from fastapi import FastAPI
from fastapi.routing import APIRouter
from pydantic import BaseModel, Field
from typing import Optional
app = FastAPI()
router = APIRouter()
class UserSchema(BaseModel):
user_name: Optional[str] = Field(None, alias="name")
class Config:
populate_by_name = True
@router.get(
"/user",
tags=["user"],
summary="Get user",
response_model=UserSchema,
response_model_by_alias = False
)
async def get_user():
user_data = {"name": "John Doe"}
return UserSchema(**user_data).model_dump()
api -ответ: (правильно)
Код: Выделить всё
{
"user_name": "John Doe"
}
Код: Выделить всё
{
"name": "string"
}
Я хочу, чтобы схема ответа ui swagger (openapi) показала имя поля user_name вместо имени псевдонима .
, что я пробовал
-
< /ol>Добавление opulate_by_name = true в конфигурации модели Pydantic .Код: Выделить всё
async def get_user(): user_data = {"name": "John Doe"} return UserSchema(**user_data).model_dump(by_alias=False)
Код: Выделить всё
class UserSchema(BaseModel):
user_name: Optional[str] = Field(None, alias="name")
class Config:
populate_by_name = True
< /code>
Настройка response_model_by_alias = false < /code> в маршруте < /li>
< /ol>
@router.get(
"/user",
tags=["user"],
summary="Get user",
response_model=UserSchema,
response_model_by_alias = False
)
Подробнее здесь: https://stackoverflow.com/questions/793 ... nse-schema