[1.5.x] Removed a mention of `Form._errors` from the documentation.

Also removed a sentence that was incorrect: raising a
`ValidationError` inside `Form.clean` doesn't clear the
`cleaned_data` attribute.

Thanks to loic84 and timograham for the review.

Backport of 9aa6d4bdb6 and
0048ed77c7 from master.
This commit is contained in:
Baptiste Mispelon 2013-11-12 20:27:21 +01:00
parent 12ff1623d6
commit 8d1f339667
1 changed files with 6 additions and 10 deletions

View File

@ -82,6 +82,10 @@ overridden:
cleaned data if you override this method (by default, ``Form.clean()`` cleaned data if you override this method (by default, ``Form.clean()``
just returns ``self.cleaned_data``). just returns ``self.cleaned_data``).
Since the field validation method have been run by the time ``clean()`` is
called, you also have access to the form's ``errors`` attribute which
contains all the errors raised by previous steps.
Note that any errors raised by your ``Form.clean()`` override will not Note that any errors raised by your ``Form.clean()`` override will not
be associated with any field in particular. They go into a special be associated with any field in particular. They go into a special
"field" (called ``__all__``), which you can access via the "field" (called ``__all__``), which you can access via the
@ -98,7 +102,8 @@ These methods are run in the order given above, one field at a time. That is,
for each field in the form (in the order they are declared in the form for each field in the form (in the order they are declared in the form
definition), the ``Field.clean()`` method (or its override) is run, then definition), the ``Field.clean()`` method (or its override) is run, then
``clean_<fieldname>()``. Finally, once those two methods are run for every ``clean_<fieldname>()``. Finally, once those two methods are run for every
field, the ``Form.clean()`` method, or its override, is executed. field, the ``Form.clean()`` method, or its override, is executed, no matter if
the previous methods have raised errors or not.
Examples of each of these methods are provided below. Examples of each of these methods are provided below.
@ -107,15 +112,6 @@ field, if the ``Field.clean()`` method raises a ``ValidationError``, any
field-specific cleaning method is not called. However, the cleaning methods field-specific cleaning method is not called. However, the cleaning methods
for all remaining fields are still executed. for all remaining fields are still executed.
The ``clean()`` method for the ``Form`` class or subclass is always run. If
that method raises a ``ValidationError``, ``cleaned_data`` will be an empty
dictionary.
The previous paragraph means that if you are overriding ``Form.clean()``, you
should iterate through ``self.cleaned_data.items()``, possibly considering the
``_errors`` dictionary attribute on the form as well. In this way, you will
already know which fields have passed their individual validation requirements.
.. _described later: .. _described later:
Form subclasses and modifying field errors Form subclasses and modifying field errors