Menu
CoddyTech

Memeriksa Satu Bidang

Termasuk bagian Formulir dalam perjalanan Django di Coddy. Pelajaran 10 dari 20.

Formulir ini menerima tanggal acara dari tahun lalu. Pemeriksaan bawaan Django mengetahui tipe dan batas, tetapi tidak mengetahui aturan situsmu. Aturan khusus untuk satu field ditulis dalam method bernama clean_ ditambah nama field. Formulir pendaftaran yang mencadangkan nama admin untuk staf:

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() memanggilnya setelah pemeriksaan field itu sendiri, jadi nilainya sudah dikonversi: DateField menghasilkan tanggal. Memunculkan forms.ValidationError menolak field tersebut, dan pesannya muncul di sebelahnya.

Method tersebut harus mengembalikan nilainya: nilai yang dikembalikan akan masuk ke cleaned_data. Tanpa return, nilainya menjadi None.

challenge icon

Tantangan

Mudah

Di EventForm, tolak tanggal sebelum hari ini dengan pesan The date cannot be in the past. Acara yang diadakan hari ini boleh.

Tambahkan acara bertanggal kemarin, dengan format seperti 2026-10-30: kamu melihat The date cannot be in the past.

Coba sendiri

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)

Semua pelajaran di Formulir

Latihan sendiri: Playground Django