如何在 pydantic response_model 中设置生成的附加值?

时间:2020-12-23 09:15:18

标签: fastapi pydantic

我遇到了以下问题,但不知道如何解决: 如何在 job.py 中添加生成的 Id 并将其设置为 JobResponse 中的值 job_id?

这是我的函数 job.py

from fastapi import FastAPI
from models import JobResponse, JobRequest

app = FastAPI()

@app.post('/job', response_model=JobResponse)
async def create_user(job: JobRequest):
    id = return_id_from_database
    return job

models.py:

from pydantic import BaseModel
from typing import Optional

class JobRequest(BaseModel):
    job_name: Optional[str] = None

class JobResponse(BaseModel):
    job_id: Optional[str] = None
    job_name: Optional[str] = None

1 个答案:

答案 0 :(得分:0)

正如评论中所承诺的,我的建议很有用,因此我也在为其他人写一个正确的答案。

解决方案相当简单,因为 Fastapi 期望函数 create_user 返回一个可序列化为 JSON 的对象,并且符合声明为的 Pydantic 模型的定义返回值。

job.py

from fastapi import FastAPI
from models import JobResponse, JobRequest

app = FastAPI()

@app.post('/job', response_model=JobResponse)
async def create_user(job: JobRequest):
    id = return_id_from_database
    return new JobResponse(**job.to_dict(), job_id=id)

models.py

from pydantic import BaseModel
from typing import Optional

class JobRequest(BaseModel):
    job_name: Optional[str] = None

class JobResponse(JobRequest):
    job_id: Optional[str] = None