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 usernameis_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.
Wyzwanie
ŁatwyW 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
2Formularze Django
Formularz DjangoWyświetlanie formularzaPoćwicz samodzielnie: Edytor online Django