‘@root_validator’ is used to apply validation on entire model.
root_validator_1.py
from pydantic import (
BaseModel,
ValidationError,
validator,
root_validator
)
from typing import Optional
class Box(BaseModel):
id: int
weight: int = None
height: int = None
@root_validator
def allValidator(cls, values):
if(values == None):
raise ValueError('id, weight and height must set to a value')
idTemp = values.get('id')
weightTemp = values.get('weight')
heightTemp = values.get('height')
err = '';
if(idTemp < 1):
err = err + 'id must > 0. '
if(weightTemp < 10):
err = err + 'weigh must >= 10. '
if(heightTemp < 15):
err = err + 'height must >= 15'
if(len(err) > 1):
raise ValueError(err)
return values
try:
b1 = Box(id = -1, weight = 0, height=16)
print(b1)
except ValidationError as e:
print(e.json())
Output
[ { "loc": [ "__root__" ], "msg": "id must > 0. weigh must >= 10. ", "type": "value_error" } ]
No comments:
Post a Comment