用condate验证Pydantic中小于今天的日期



我试图使用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

最新更新