如何让Pydantic遇到第一个校验错误时就停止执行并返回对应错误?
Pydantic 校验终止(首次错误立即返回)解决方案
Pydantic V2(推荐使用)
V2 原生内置快速失败(Fail Fast)能力,支持两种配置方式:
- 模型全局生效:在模型配置中添加
fail_fast = True即可,该配置会作用于该模型所有校验场景,包括嵌套模型、列表元素校验
from pydantic import BaseModel, ConfigDict class ClassA(BaseModel): model_config = ConfigDict(fail_fast=True) # 你的字段定义 required_field: str optional_field: int | None = None # 嵌套列表场景同样生效,遇到列表中第一个校验失败的元素就会终止流程 class ClassAList(BaseModel): model_config = ConfigDict(fail_fast=True) data: list[ClassA]
- 单次校验临时生效:如果不需要全局开启,可在单次执行校验时传入参数:
ClassA.model_validate(your_input, fail_fast=True)
Pydantic V1
V1 没有原生的快速失败配置,可通过两种方式自行实现:
- 字段级校验:自定义校验装饰器逻辑,捕获到第一个
ValidationError时直接抛出,不执行后续校验规则 - 列表场景优化:不直接使用
List[ClassA]进行全量校验,自行遍历列表元素逐个校验,遇到第一个错误立即中断遍历返回异常
开启快速失败逻辑后,对于批量同类型错误的场景可以大幅降低校验耗时,避免无效的重复校验执行。
内容的提问来源于stack exchange,提问作者Jyotirmay
相关产品推荐
相关产品推荐

