Как в Pydantic использовать fild_validator, если поле описано в другом классе?
Если Test.version == "2.1"
нужно выполнить проверку поля Offer.new.
Упрощенный json (реальный намного больше, поэтому и разбит на классы):
{
"data":
{
"id": 11,
"offer":
[
{
"offer_id": 8,
"new": "qwerty"
}
],
"version": "2.1"
}
}
Как я пробовал:
from enum import StrEnum
from pydantic import BaseModel, field_validator
class Versions(StrEnum):
v2_0 = '2.0'
v2_1 = '2.1'
class Offer(BaseModel):
offer_id: int
@field_validator('version')
def check_version(cls, values):
if values == '2.1':
new: str
class Data(BaseModel):
id: int
offer: List[Offer]
class Test(BaseModel):
data: Data
version: Versions
Еще пробовал так:
if Test.values == '2.1':
Получаю ошибку:
pydantic.errors.PydanticUserError: Decorators defined with incorrect
fields: schemas.test.Offer:45545536.check_version
(use check_fields=False if you're inheriting from the model and intended this)