使用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):
    ...

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

幼稚的方法:

class UpdateItem(BaseModel):
    name: Optional[str] = None
    description: Optional[str] = None
    price: Optional[float] = None
    tax: Optional[float]

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

还有更好的选择吗?

以上是使用Pydantic将每个字段设为可选的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>