You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pydantic/Django Ninja日期范围错误,如何跳过指定字段验证?

解决日期字段验证错误的方案

针对你遇到的day is out of range for month验证错误,要跳过created_at和updated_at字段的验证,结合你使用的django-ninja==0.22.0和pydantic==1.10.14,可以用以下两种方法:

方法一:字段级关闭验证

在Schema中显式定义这两个字段,通过Field参数直接关闭验证:

from datetime import datetime
from pydantic import Field
from ninja import ModelSchema
from your_app.models import TargetModel  # 替换为你的实际模型类

class NinjaResponseSchema(ModelSchema):
    created_at: datetime = Field(..., validate=False)
    updated_at: datetime = Field(..., validate=False)

    class Config:
        model = TargetModel
        fields = "__all__"

方法二:用验证器跳过验证

通过自定义验证器直接返回字段原值,跳过后续的日期格式验证逻辑:

from datetime import datetime
from pydantic import validator
from ninja import ModelSchema
from your_app.models import TargetModel  # 替换为你的实际模型类

class NinjaResponseSchema(ModelSchema):
    class Config:
        model = TargetModel
        fields = "__all__"

    @validator("created_at", "updated_at", pre=True, always=True)
    def skip_datetime_validation(cls, value):
        return value

补充说明

  • 方法一简洁直观,直接针对目标字段关闭验证;
  • 方法二更灵活,若后续需要对字段做简单预处理,可在验证器中扩展逻辑;
  • 两种方法均适配你当前使用的版本,不会破坏原有序列化流程。

内容的提问来源于stack exchange,提问作者Azrael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 00:02:46