Как в 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)

Ответы (0 шт):