【问题标题】:Python pydantic validate datesPython pydantic 验证日期
【发布时间】:2021-01-10 20:34:01
【问题描述】:

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

如何在 pydantic 中验证日期?

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

【问题讨论】:

    标签: python pydantic


    【解决方案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 类/模式/模型使用相同的验证器吗?
    • 是的,如here所述
    猜你喜欢
    • 1970-01-01
    • 2022-11-17
    • 1970-01-01
    • 2021-09-06
    • 1970-01-01
    • 1970-01-01
    • 2018-04-10
    • 2012-08-06
    相关资源
    最近更新 更多