0Pricing
Django Academy · Pelajaran

Validasi Kustom dengan metode clean

Tambahkan aturan validasi tingkat bidang dan formulir

Validasi Kustom dengan metode clean adalah pelajaran Django Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Django Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Django Academy mencakup 4 pelajaran total.

Bagian dari pelajaran ini belum diterjemahkan dan ditampilkan dalam bahasa Inggris.

Beyond Built-in Rules

Model fields give you basic checks, but real apps need custom rules. Django runs your own clean methods to enforce exactly the logic you want. 🧹

Field-Level clean

To validate one field, add a method named clean_fieldname. Django calls it automatically during validation for that single field.

def clean_title(self):
    title = self.cleaned_data["title"]
    return title

Read from cleaned_data

Inside a clean method, pull the value from cleaned_data. By this point Django has already converted it to the right Python type for you.

title = self.cleaned_data["title"]

Raise to Reject

If a value breaks your rule, raise a ValidationError. Django catches it and shows the message next to that field in the form.

from django.core.exceptions import ValidationError
raise ValidationError("Title is too short.")

A Real Field Check

Here we reject titles shorter than five characters. Note you must return the value at the end so it stays in cleaned_data.

def clean_title(self):
    title = self.cleaned_data["title"]
    if len(title) < 5:
        raise ValidationError("Too short.")
    return title

Always Return the Value

The golden rule of clean_fieldname: return the cleaned value. Forget it and the field becomes None, even when input was valid.

Form-Level clean

To compare two fields, override the whole-form clean method. It runs after every field-level check has finished.

def clean(self):
    cleaned = super().clean()
    return cleaned

Call super().clean() First

Begin your form-level clean by calling super().clean(). That gives you the full cleaned_data dict gathered from the field checks.

cleaned = super().clean()
start = cleaned.get("start")
end = cleaned.get("end")

Compare Two Fields

Now you can enforce cross-field rules, like making sure end comes after start. Raise ValidationError when the relationship is wrong.

if start and end and end < start:
    raise ValidationError("End must be after start.")

Attach Errors to a Field

In form-level clean you can target one field with add_error. The message then appears right beside that input, not at the top.

self.add_error("end", "End must be after start.")

Order of Validation

Django runs each clean_fieldname first, then the form-level clean last. Knowing this order helps you place each rule in the right spot.

Quick Check

Where should a rule that compares two fields live?

Recap: Custom Validation

Well done! Use clean_fieldname for single fields and form-level clean for cross-field rules. Raise ValidationError to reject, and always return cleaned values. 🎉

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Validasi Kustom dengan metode clean” gratis?

Ya — teks lengkap “Validasi Kustom dengan metode clean” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Django Academy, upgrade ke CoddyKit PRO. Kursus Django Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Validasi Kustom dengan metode clean”?

Tambahkan aturan validasi tingkat bidang dan formulir Kamu berlatih Django Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Django Academy?

Tidak diperlukan pengalaman sebelumnya. Django Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Validasi Kustom dengan metode clean” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Django Academy ini?

Ya. Setiap pelajaran Django Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Mendeklarasikan ModelForm dan Meta.fields
  2. form.save() dan commit=False
  3. Validasi Kustom dengan metode clean
  4. Widget, Label, dan Teks Bantuan
← Kembali ke Django Academy