首页 > 解决方案 > Python pydantic 验证日期

问题描述

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

如何在 pydantic 中验证日期?

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

标签: pythonpydantic

解决方案


字段验证器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

推荐阅读