Я использую Pydantic v2. На данный момент я хотел бы удалить значение дискриминатора из loc или ошибку проверки. Пожалуйста, взгляните на код ниже:
from pprint import pprint
from typing import Literal, Union, Annotated, Any
from pydantic import BaseModel, Field, RootModel, ValidationError
from pydantic.main import Model
class Tiger(BaseModel):
animal_type: Literal["tiger"] = "tiger"
ferocity_scale: float = Field(..., ge=0, le=10)
class Shark(BaseModel):
animal_type: Literal["shark"] = "shark"
ferocity_scale: float = Field(..., ge=0, le=10)
class Lion(BaseModel):
animal_type: Literal["lion"] = "lion"
ferocity_scale: float
class WildAnimal(RootModel):
root: Annotated[Union[Tiger, Shark, Lion], Field(..., discriminator='animal_type')]
try:
my_shark = WildAnimal.model_validate({'animal_type': 'shark', 'ferocity_scale': 115})
except ValidationError as exc:
pprint(exc.errors())
Код выводит:
[{'ctx': {'le': 10.0},
'input': 115,
'loc': ('shark', 'ferocity_scale'), Model:
try:
return super().model_validate(obj, strict=strict, from_attributes=from_attributes, context=context)
except ValidationError as exc:
# modify loc
# reraise ValidationError
Подробнее здесь: https://stackoverflow.com/questions/790 ... tion-error
Как удалить значение дискриминатора из loc при ошибке проверки? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение