Menu
CoddyTech

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 username

is_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.

challenge icon

Desafío

Fácil

En 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

Practica por tu cuenta: Playground de Django