I do not yet fully understand the validation process of Forms in Django. I've read the documentation about it already, but I've still questions.
In the Mozilla Django Tutorial you can read this:
Django provides numerous places where you can validate your data. The
easiest way to validate a single field is to override the method
clean_() for the field you want to check. So for example,
we can validate that entered renewal_date values are between now and 4
weeks by implementing clean_renewal_date() as shown below.
The tutorial is (partly) wrong - the
clean_YOURFIELDNAME methods are not overrides as there's no default
clean_YOURFIELDNAME method to be overridden. It's just that the form validation will look for those methods and if they are defined call them as part as the validation process.
For the implementation details, the simplest is to read the source: https://github.com/django/django/blob/master/django/forms/forms.py#L379