Pydantic V2 通过嵌套模型传递字段

问题描述 投票:0回答:1

我正在尝试使用 model_validator (和 field_validator)验证某些字段。所以我有一个像这样的嵌套模型:

class Parent(Basemodel):
 field1: List[Child]

class Child(AnotherModel):
 field2: str

每个模型都有更多的字段,甚至还有更多的模型,但现在可以忽略它们。我想要做的是,将 model_validators 添加到每个模型中以验证某些值。我不能在单个验证中提出错误,因为我需要最后出现所有错误。 所以我的想法是将所有错误写入一个列表中,稍后我可以访问该列表(我可以设置一个错误字段并将其设置为 except=True,这样我以后就不会用模型转换它)。 但我怎样才能将错误列表传递给孩子们呢? 或者你有更好的方法来解决这个问题吗

感谢您的帮助:)

python python-3.x pydantic pydantic-v2
1个回答
0
投票

如果我的问题正确,您可以执行以下操作:

from pydantic import BaseModel, ValidationError


class Child(BaseModel):
    field1: int

class Parent(BaseModel):
    field1: list[Child]
    field2: str



try:
    Parent.model_validate({
        "field1": [{"field1": 1}, {"field1": "should_raise_error"}],  # Second value contains str instead of int
        "field2": 1,  # Int instead of str
    })
except ValidationError as e:
    print(e.json())  # Here will be all information about errors
© www.soinside.com 2019 - 2024. All rights reserved.