typestar

Validadores en Python

field_validator para un campo, model_validator para el objeto entero.

from pydantic import BaseModel, field_validator, model_validator


class Sesion(BaseModel):
    lang: str
    started: int
    finished: int

    @field_validator("lang")
    @classmethod
    def minusculas(cls, valor: str) -> str:
        return valor.strip().lower()

    @model_validator(mode="after")
    def revisar_orden(self):
        if self.finished < self.started:
            raise ValueError("terminó antes de empezar")
        return self


print(Sesion(lang="  PYTHON ", started=1, finished=5).lang)
try:
    Sesion(lang="rust", started=9, finished=2)
except ValueError as exc:
    print(str(exc).splitlines()[1].strip())

Cómo funciona

  1. Un validador de campo devuelve el valor limpio o lanza.
  2. mode="after" corre una vez que el tipo ya fue convertido.
  3. Un validador de modelo puede comparar campos entre sí.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
25
Caracteres a escribir
559
Tokens
147
Ritmo de tres estrellas
105 tpm

Al ritmo de tres estrellas de 105 tokens por minuto, este intento toma unos 84 segundos.

Escribe este fragmento

Paso 3 de 5 en Modelos de Pydantic; paso 3 de 19 en Servicios web y acceso a datos.

← Anterior Siguiente →