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
相关产品推荐
相关产品推荐

