Topic 12 / 40
ModelForms & Custom Validation Clean Methods
1. Deep Architecture
Django forms process raw request inputs into typed Python values via the is_valid() call. The validation process runs individual field checks, executes custom field-level clean_<fieldname> methods, and finally runs the form-level clean() method for cross-field checks.
2. The Feynman Gatekeeper
[KNOWLEDGE CHECK] Trace the flow of data inside a Django form from request.POST until it is saved inside cleaned_data.
3. The Code
from django import forms
from sanjaya_core.models import Video
class VideoUploadForm(forms.ModelForm):
class Meta:
model = Video
fields = ['title', 'file_path']
def clean_title(self):
title = self.cleaned_data.get('title')
if len(title) < 5:
raise forms.ValidationError("Title must be at least 5 characters.")
return title
4. The Funnel
Stat Level-Up: Validation Gatekeeper (Lvl 1).
Sanjaya Integration: Reject invalid video format paths early, preventing downstream processing failures.