Skip to content

How to validate data depending on another property #2498

Answered by PrettyWood
ssbarnea asked this question in Question
Discussion options

You must be logged in to vote

Hi @ssbarnea
You could just use validator

from pydantic import BaseModel, validator

VALID_VERSIONS = {'q', 'w'}

class PlatformModel(BaseModel):
    name: str
    versions: list[str]

    @validator('versions', each_item=True)
    def valid_version(cls, v: str) -> str:
        if v not in VALID_VERSIONS:
            raise ValueError(f'{v!r} is not a valid version')
        return v


PlatformModel(name='qwe', versions=['a', 'w', 'b', 'q'])
# pydantic.error_wrappers.ValidationError: 2 validation errors for PlatformModel
# versions -> 0
#   'a' is not a valid version (type=value_error)
# versions -> 2
#   'b' is not a valid version (type=value_error)

Hope it helps!

Replies: 1 comment 3 replies

Comment options

You must be logged in to vote
3 replies
@ssbarnea
Comment options

@PrettyWood
Comment options

@ssbarnea
Comment options

Answer selected by ssbarnea
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
2 participants