【发布时间】:2020-04-22 08:18:52
【问题描述】:
我有以下 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)。我怎样才能得到与第一种情况相同的结果?
【问题讨论】:
-
使用 pydantic==1.3 运行您的确切代码时,我没有收到错误消息。你运行的是哪个 pydantic 版本?
-
@Nicola 我使用的是 0.32.2,这是使用 fastapi 包的要求......我尝试了 1.3,它按你说的那样工作。 fastapi 上有一个未解决的问题来支持 Pydantic v1.0,但我不确定在此期间该怎么做。有人有任何解决方法建议让我的上述代码在 Pydantic 0.32.2 上运行吗?
-
Fastapi 自 0.44.0 版起支持 Pydantic v.1:fastapi.tiangolo.com/release-notes/#0440
-
@Nicola 确实如此,谢谢!解决了我的问题