我有以下Pydantic模型:
class Report(BaseModel):
id: int
name: str
grade: float = None
proportion: float = None
@validator('*', pre=True)
def blank_strings(cls, v):
print(v)
if v == "":
return None
return v
我在这里的目标是能够将空字符串忽略为空值,但似乎不起作用。
Report(id=5,name="Steve",grade=0.5)
创建一个实例,其中proportion=None
但...
Report(id=5,name="Steve",grade=0.5,proportion="")
引发错误value is not a valid float (type=type_error.float)
。如何获得与第一种情况相同的结果?
答案 0 :(得分:0)
这对我有用 pydantic==1.6.1:
class Report(BaseModel):
id: int
name: str
grade: Optional[float]
proportion: Optional[float]
@validator('proportion', pre=True)
def blank_string(value, field):
if value == "":
return None
return value
Optional
创建等效于 Union[float, None]
的类型约束。
将空字符串转换为 None 满足类型约束。