相关疑难解决方法(0)

使用 Pydantic 将每个字段设为可选

我正在使用 FastAPI 和 Pydantic 制作 API。

我想要一些 PATCH 端点,可以一次编辑记录的 1 个或 N 个字段。此外,我希望客户端只传递有效负载中的必要字段。

例子:

class Item(BaseModel):
    name: str
    description: str
    price: float
    tax: float


@app.post("/items", response_model=Item)
async def post_item(item: Item):
    ...

@app.patch("/items/{item_id}", response_model=Item)
async def update_item(item_id: str, item: Item):
    ...
Run Code Online (Sandbox Code Playgroud)

在这个例子中,对于 POST 请求,我希望每个字段都是必需的。但是,在 PATCH 端点中,我不介意有效负载是否仅包含例如描述字段。这就是为什么我希望所有字段都是可选的。

幼稚的方法:

class UpdateItem(BaseModel):
    name: Optional[str] = None
    description: Optional[str] = None
    price: Optional[float] = None
    tax: Optional[float]
Run Code Online (Sandbox Code Playgroud)

但这在代码重复方面会很糟糕。

还有更好的选择吗?

python python-3.x pydantic fastapi

6
推荐指数
7
解决办法
868
查看次数

标签 统计

fastapi ×1

pydantic ×1

python ×1

python-3.x ×1