Validar un campo
Parte de la sección Formularios del Journey de Django de Coddy. Lección 10 de 20.
El formulario acepta un evento fechado el año pasado. Las comprobaciones integradas de Django conocen los tipos y los límites, no las reglas de tu sitio. Una regla propia para un campo va en un método llamado clean_ más el nombre del campo. Un formulario de registro que reserva el nombre admin para el personal:
class SignupForm(forms.Form):
username = forms.CharField(max_length=30)
def clean_username(self):
username = self.cleaned_data["username"]
if username.lower() == "admin":
raise forms.ValidationError("That name is reserved.")
return usernameis_valid() lo llama después de las comprobaciones propias del campo, así que el valor ya está convertido: un DateField devuelve una fecha. Lanzar forms.ValidationError rechaza el campo y el mensaje aparece junto a él.
El método debe devolver el valor: lo que devuelve se guarda en cleaned_data. Sin el return, el valor pasa a ser None.
Desafío
FácilEn EventForm, rechaza una fecha anterior a hoy con el mensaje The date cannot be in the past. Una fecha de hoy es válida.
Añade un evento con fecha de ayer, escrita como 2026-10-30: verás «La fecha no puede estar en el pasado».
Pruébalo tú mismo
from django import forms
class EventForm(forms.Form):
title = forms.CharField(max_length=100)
date = forms.DateField()
place = forms.CharField(max_length=100)
description = forms.CharField(widget=forms.Textarea, required=False)
capacity = forms.IntegerField(min_value=1)
Todas las lecciones de Formularios
2Formularios de Django
Un formulario de DjangoDibujar un formulario5Proyecto: Lista de invitados
Una confirmación de asistencia por correo electrónicoUna página para invitadosPractica por tu cuenta: Playground de Django