python - 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")
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
推荐阅读
- tensorflow - Tensorflow 2:一次对多个输入进行归一化
- python - python如何知道dataclasses.field函数不是数据类中的默认值?
- database - 在 ArrangoDB 中添加参数
- html - 用户上传的媒体文件未显示
- wordpress - 如何将可变电子邮件地址添加到 WooCommerce 中的新订单电子邮件?
- android - 使用 HmsMessageService(HMS 推送工具包)无法在华为设备上获取通知
- java - 为什么我不输出除 1 以外的 'a' 值?
- python-3.x - django将文件上传到openstack-swift而不在本地保存
- r - 如果两列相同,则更新值
- wordpress - 在 WooCommerce 中为特定用户角色创建订单时添加额外的客户注释