#python #json #fastapi #pydantic
Вопрос:
У меня есть маршрутизатор, который извлекает все данные из базы данных. Вот мой код:
@router.get('/articles/', response_model=List[articles_schema.Articles])
async def main_endpoint():
query = articles_model.articles.select().where(articles_model.articles.c.status == 2)
return await db.database.fetch_all(query)
Ответ — массив, содержащий объект json, подобный этому
[
{
"title": "example1",
"content": "example_content1"
},
{
"title": "example2",
"content": "example_content2"
},
]
Но я хочу дать такой ответ:
{
"items": [
{
"title": "example1",
"content": "example_content1"
},
{
"title": "example2",
"content": "example_content2"
},
]
}
Как я могу этого достичь? Пожалуйста, помогите. Заранее спасибо
Ответ №1:
Вы можете просто определить другую модель, содержащую items
список в качестве поля:
from pydantic import BaseModel
from typing import List
class ResponseModel(BaseModel):
items: List[articles_schema.Articles]
и используйте его в ответе:
@router.get('/articles/', response_model=ResponseModel)
async def main_endpoint():
query = articles_model.articles.select().where(
articles_model.articles.c.status == 2
)
return ResponseModel(
items=await db.database.fetch_all(query),
)