因此,我正在构建一个API来与我的个人葡萄酒标签集合数据库进行交互。就我所理解的而言,pydantic模型的目的是作为发送到API的模式的“验证器”。因此,我添加标签的pydantic模式如下:
from pydantic import BaseModel
from typing import Optional
class WineLabels(BaseModel):
name: Optional[str]
type: Optional[str]
year = Optional[int]
grapes = Optional[str]
country = Optional[str]
region = Optional[str]
price = Optional[float]
id = Optional[str]所有字段都不会自动更新。这等于sqlalchemy模型,因为我想手动添加所有字段。
所以我的问题是,假设我想创建一个按ID搜索的调用,另一个按名称进行搜索。我不认为应该应用这些模式。我应该创建另一个模式吗?我应该创造这样一个吗?:
class SearchWineLabel(WineLabels):
id: str是否应该为已经存在的模式无法实现的每个目的创建模式?
抱歉,但我不明白背后的逻辑。谢谢!!
发布于 2022-09-11 18:51:40
如果您想按id或name进行搜索,我不确定您是否需要一个模式--在这些情况下,一个或多个get参数通常就足够了(而且通常在语义上更好)。
在任何情况下,架构都是为端点预期接收的内容编写的,而不是使用以其他方式包含字段的通用模式。将模式看作给定资源和端点的输入/输出定义。
您通常希望有不同的模式来进行添加和更新(因为添加将要求存在某些字段,而更新可能允许空字段或任何位置缺少的字段)。
Pydantic模式允许您在不编写代码的情况下表达这些差异,并且它将反映在/docs下生成的api文档中。
https://stackoverflow.com/questions/73674063
复制相似问题