我正在将一个微服务从PYDANIC 1迁移到PYDANC2.以前我有这样的服务:
class ComplementQuery(BaseModel):
imports: List[str] = Field(default_factory=list)
subquery: str = Field(...)
@validator("imports", pre=True, each_item=True)
def complement_imports(cls, value: str) -> str:
return f'import "{value}"'
我阅读了文档,发现现在必须使用@field_validator.替换验证器并将"Pre=True"更改为"MODE="BEFORE".但Each_Items我不确定它应该如何寻址.现在我有如下内容:
class ComplementQuery(BaseModel):
imports: List[Annotated[str, Field(default_factory=List)]]
subquery: str = Field(...)
@field_validator("imports", mode="before")
@classmethod
def complement_imports(cls, value: str) -> str:
return f'import "{value}"'
COMPARY_IMPORTS验证器是否将应用于每个导入项? 或者,我是否应该将pydanti.unctionalvalidators的BeForeValidator放在该字段中?我有点困惑.
也许应该是这样的:
def complement_imports(v: str) -> str:
return f'import "{v}"'
class ComplementQuery(BaseModel):
imports: List[
Annotated[str, BeforeValidator(complement_imports), Field(default_factory=List)]
]
subquery: str = Field(...)