我试图使用pydantic为fastapi应用程序来限制提供的日期小于今天。从pydantic文档中,我看到了一个很好的函数condate
,它有一个lt
参数——这正是我需要的。我的代码是:
from datetime import date
from pydantic import BaseModel, condate
class RiskData(BaseModel):
dob: condate(lt=date.today())
提供以下错误:
File "pydanticmain.py", line 342, in pydantic.main.BaseModel.__init__
pydantic.error_wrappers.ValidationError: 2 validation errors for OpenAPI
components -> schemas -> RiskData -> properties -> dob -> exclusiveMaximum
value is not a valid float (type=type_error.float)
components -> schemas -> RiskData -> $ref
field required (type=value_error.missing)
我知道我可以使用pydantic.validator
来实现我需要的功能,但也许pydantic可以让我节省几行。
通过FastAPI生成OpenApi Schema似乎不支持Type: condate。
你最好改成这个,
from datetime import date
from pydantic import BaseModel, validator
class RiskData(BaseModel):
dob: date
@validator("dob")
def validate_dob(cls, v, values, **kwargs):
if v < date.today():
raise ValueError("Your Error Message")
return v