使用
root validator
。您可能还想启用
validate_assignment
选项,以便在通过赋值更改属性后运行验证:
from pydantic import BaseSettings, root_validator
class Settings(BaseSettings):
name: str = "name"
age: int = 25
old_person: bool = False
@root_validator
def validate_old_person(cls, values):
values['old_person'] = values['age'] > 50
return values
class Config:
validate_assignment = True
如果我们运行以下代码:
# Creating an object with the defaults
settings = Settings()
print(settings)
# Create an object with an advanced age
settings = Settings(age=60)
print(settings)
# Create an object with the defaults, then modify it
settings = Settings()
settings.age = 60
print(settings)
输出为:
name='name' age=25 old_person=False
name='name' age=60 old_person=True
name='name' age=60 old_person=True