Menu
CoddyTech

Sprawdzanie jednego pola

Część sekcji Formularze ścieżki Django w Coddy. Lekcja 10 z 20.

Formularz akceptuje wydarzenie datowane na zeszły rok. Wbudowane mechanizmy sprawdzające Django znają typy i limity, ale nie znają reguł obowiązujących w Twojej witrynie. Własną regułę dotyczącą jednego pola umieszcza się w metodzie o nazwie clean_ plus nazwa pola. Oto formularz rejestracyjny, który zachowuje nazwę admin dla personelu:

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() wywołuje tę metodę po sprawdzeniu samego pola, więc wartość jest już skonwertowana: DateField zwraca datę. Zgłoszenie forms.ValidationError powoduje odrzucenie pola, a komunikat pojawia się obok niego.

Metoda musi return wartość: to, co zwróci, trafia do cleaned_data. Bez return wartością staje się None.

challenge icon

Wyzwanie

Łatwy

W EventForm odrzuć datę wcześniejszą niż dzisiejsza, wyświetlając komunikat The date cannot be in the past. Wydarzenie z dzisiejszą datą jest w porządku.

Dodaj wydarzenie z wczorajszą datą, wpisaną w formacie 2026-10-30: zobaczysz komunikat The date cannot be in the past.

Spróbuj swoich sił

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)

Wszystkie lekcje w sekcji Formularze

Poćwicz samodzielnie: Edytor online Django