Menu
CoddyTech

Verificare un campo

Fa parte della sezione Form del percorso Django di Coddy. Lezione 10 di 20.

Il modulo accetta un evento datato all'anno scorso. I controlli integrati di Django conoscono i tipi e i limiti, non le regole del tuo sito. Una regola personalizzata relativa a un campo va inserita in un metodo chiamato clean_ seguito dal nome del campo. Un modulo di registrazione che riserva il nome admin al personale:

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 chiama dopo i controlli specifici del campo, quindi il valore è già convertito: un DateField restituisce una data. Sollevare forms.ValidationError rifiuta il campo e il messaggio compare accanto ad esso.

Il metodo deve restituire il valore: ciò che restituisce viene inserito in cleaned_data. Senza return, il valore diventa None.

challenge icon

Sfida

Facile

In EventForm, rifiuta una data precedente a oggi con il messaggio The date cannot be in the past. Un evento di oggi va bene.

Aggiungi un evento con data di ieri, nel formato 2026-10-30: vedrai The date cannot be in the past.

Provalo tu

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)

Tutte le lezioni di Form

Esercitati da solo: Playground Django