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
- Un validador de campo devuelve el valor limpio o lanza.
mode="after"corre una vez que el tipo ya fue convertido.- Un validador de modelo puede comparar campos entre sí.
Palabras clave y builtins usados aquí
asclassclsdefexceptifintprintraisereturnselfstrtry
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.
Paso 3 de 5 en Modelos de Pydantic; paso 3 de 19 en Servicios web y acceso a datos.