Browse Source

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.
Baptiste Mispelon 11 years ago
parent
commit
9aa6d4bdb6
1 changed files with 6 additions and 10 deletions
  1. 6 10
      docs/ref/forms/validation.txt

+ 6 - 10
docs/ref/forms/validation.txt

@@ -78,6 +78,10 @@ overridden:
   like. This method can return a completely different dictionary if it wishes,
   like. This method can return a completely different dictionary if it wishes,
   which will be used as the ``cleaned_data``.
   which will be used as the ``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
@@ -95,7 +99,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.
 
 
@@ -104,15 +109,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.
-
 .. _raising-validation-error:
 .. _raising-validation-error:
 
 
 Raising ``ValidationError``
 Raising ``ValidationError``