Python pydantic验证日期

Python pydantic验证日期,python,pydantic,Python,Pydantic,我的问题很简单,我很惊讶到目前为止还没有人问这个问题: 如何在pydantic中验证日期 例如,我只希望接受1980.1.1-2000.1.1范围内的日期。对于datetime字段就是您想要的。您可以按如下方式使用它: from pydantic import BaseModel, validator from datetime import datetime class DModel(BaseModel): dt: datetime @validator("dt&

我的问题很简单,我很惊讶到目前为止还没有人问这个问题:

如何在pydantic中验证日期

例如,我只希望接受1980.1.1-2000.1.1范围内的日期。

对于
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导入BaseModel,验证程序
从日期时间导入日期时间
D类模型(基本模型):
日期时间
@验证器(“dt”)
def确保日期范围(cls,v):

如果不是datetime(year=1980,month=1,day=1),我可以对多个pydantic类/模式/模型使用相同的验证器吗?是的,如上所述