By passing the argument 'each_item=True' to the validator decorator, we can validate every item in the collection.
Let’s see it with an example.
validator_demo_5.py
from pydantic import BaseModel, ValidationError, validator
from typing import List
class Test(BaseModel):
even_numbers: List[int]
@validator('even_numbers', each_item=True)
def evenNumValidator(cls, value):
if(value % 2 != 0):
raise ValueError('number must be even')
return value
try:
t1 = Test(even_numbers = [2, 4, 6])
print(t1)
t2 = Test(even_numbers = [2, 4, 5, 6, 7])
print(t2)
except ValidationError as e:
print(e.json())
Output
even_numbers=[2, 4, 6] [ { "loc": [ "even_numbers", 2 ], "msg": "number must be even", "type": "value_error" }, { "loc": [ "even_numbers", 4 ], "msg": "number must be even", "type": "value_error" } ]
On validation failure, it return the failed position element from the list.
No comments:
Post a Comment