欢迎访问宙启技术站
智能推送

pydantic中root_validator()函数的使用方法和实例

发布时间:2023-12-28 18:49:54

在Pydantic中,root_validator()函数用于验证整个模型的数据,并在需要时对其进行修改或补充。它被用于定义对模型数据的某些约束条件和验证规则。

root_validator()函数的使用方法如下:

1. 在Pydantic模型类中定义一个root_validator()方法。

2. 使用@root_validator装饰器将该方法与模型类绑定。

root_validator()方法应该接受两个参数:clsvaluescls指向模型类本身,而values是包含模型的所有字段值的字典。

root_validator()方法中,您可以编写验证规则和对数据进行修改的逻辑。如果验证失败,您可以引发ValueError异常,并提供相应的错误信息。

下面是一个使用root_validator()函数的例子:

from pydantic import BaseModel, root_validator


class Person(BaseModel):
    name: str
    age: int

    @root_validator
    def validate_name_age(cls, values):
        name = values.get('name')
        age = values.get('age')

        if len(name) < 3:
            raise ValueError('Name must be at least 3 characters long')

        if age < 0 or age > 120:
            raise ValueError('Age must be between 0 and 120')

        return values


person_data = {
    'name': 'John',
    'age': 25
}

person = Person(**person_data)
print(person)

在上面的例子中,我们定义了一个Person模型类,其中包含nameage两个字段。然后,我们使用@root_validator装饰器将validate_name_age()方法与模型类绑定。

validate_name_age()方法中,我们从values字典中获取nameage字段的值。然后,我们对字段进行验证,如果验证失败,我们引发ValueError异常。在这种情况下,如果名称长度小于3或年龄不在0到120之间,则会引发异常。

最后,我们使用从字典中获取的数据创建Person实例,并打印出结果。

在这个例子中,假设字典中的数据是有效的,所以没有验证错误。如果我们将名称更改为"Jo"或年龄更改为200,那么将引发相应的异常,并阻止创建Person实例。

总结起来,root_validator()函数让您能够对整个模型的数据进行自定义验证和修改。它可以用于实现复杂的验证规则和逻辑,并更好地保护您的数据的完整性和一致性。