Menu
CoddyTech

Vérifier un champ

Fait partie de la section Formulaires du Journey Django de Coddy. Leçon 10 sur 20.

Le formulaire accepte un événement daté de l'année dernière. Les vérifications intégrées de Django connaissent les types et les limites, mais pas les règles de votre site. Une règle qui vous est propre concernant un champ se place dans une méthode nommée clean_ suivie du nom du champ. Un formulaire d'inscription qui réserve le nom admin au personnel :

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() l'appelle après les vérifications propres au champ, donc la valeur est déjà convertie : un DateField renvoie une date. Lever forms.ValidationError rejette le champ, et le message apparaît à côté de celui-ci.

La méthode doit renvoyer la valeur : ce qu'elle renvoie se retrouve dans cleaned_data. Sans le return, la valeur devient None.

challenge icon

Défi

Facile

Dans EventForm, refuse une date antérieure à aujourd’hui avec le message The date cannot be in the past. Une date correspondant à aujourd’hui convient.

Ajoute un événement daté d’hier, saisi au format 2026-10-30 : tu vois The date cannot be in the past.

Essayez vous-même

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)

Toutes les leçons de Formulaires

Entraînez-vous par vous-même : Playground Django