Tuesday 2 November 2021

Pydantic: validate always

If a field do not set any value, then pydantic validator is not called on that field. You can customize this behaviour by passing the argument ‘always=True’.

 

validator_demo_6.py

from pydantic import BaseModel, ValidationError, validator
from typing import Optional

class Box(BaseModel):
    id: int
    weight: int = None
    height: int = None

    @validator('*', always=True)
    def allValidator(cls, value):
        if(value == None):
            raise ValueError('id, weight and height must set to a value')
        if(value < 1):
            raise ValueError('id, weight and height must > 0')
        return value

try:
    b1 = Box(id = 1, weight = 0)
    print(b1)
except ValidationError as e:
    print(e.json())

 

Output

[
  {
    "loc": [
      "weight"
    ],
    "msg": "id, weight and height must > 0",
    "type": "value_error"
  },
  {
    "loc": [
      "height"
    ],
    "msg": "id, weight and height must set to a value",
    "type": "value_error"
  }
]

 


Previous                                                    Next                                                    Home

No comments:

Post a Comment