Python 花哨的验证日期
Python pydantic validate dates
我的问题很简单,令我惊讶的是到目前为止还没有人问:
如何在 pydantic 中验证日期?
例如,我只想接受 1980.1.1-2000.1.1 范围内的日期。
validator for datetime
字段就是你想要的。您可以按如下方式使用它:
from pydantic import BaseModel, validator
from datetime import datetime
class DModel(BaseModel):
dt: datetime
@validator("dt")
def ensure_date_range(cls, v):
if not datetime(year=1980, month=1, day=1) <= v < datetime(year=2000, month=1, day=1):
raise ValueError("Must be in range")
return v
DModel.parse_obj({"dt": "1995-01-01T00:00"})
DModel.parse_obj({"dt": "2001-01-01T00:00"}) # validation error
我的问题很简单,令我惊讶的是到目前为止还没有人问:
如何在 pydantic 中验证日期?
例如,我只想接受 1980.1.1-2000.1.1 范围内的日期。
validator for datetime
字段就是你想要的。您可以按如下方式使用它:
from pydantic import BaseModel, validator
from datetime import datetime
class DModel(BaseModel):
dt: datetime
@validator("dt")
def ensure_date_range(cls, v):
if not datetime(year=1980, month=1, day=1) <= v < datetime(year=2000, month=1, day=1):
raise ValueError("Must be in range")
return v
DModel.parse_obj({"dt": "1995-01-01T00:00"})
DModel.parse_obj({"dt": "2001-01-01T00:00"}) # validation error