Menu
CoddyTech

Validar un campo

Parte de la sección Formularios del Journey de Django de Coddy. Lección 10 de 20.

El tablero acepta eventos fechados el año pasado. Las reglas integradas conocen los tipos y los límites, no 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 proporciona una fecha. Al generar forms.ValidationError, se rechaza el campo y el mensaje aparece debajo.

El método debe devolver el valor: lo que devuelve se guarda en cleaned_data. Sin el return, el valor se convierte en 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.

Pulsa Run y añade un evento con fecha de ayer.

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