Documented the always_test attribute for validator functions.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@3792 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Malcolm Tredinnick 2006-09-22 12:46:35 +00:00
parent c3d7aad6d0
commit 4ca66711b5
1 changed files with 27 additions and 0 deletions

View File

@ -481,6 +481,33 @@ the data being validated.
Also, because consistency in user interfaces is important, we strongly urge you Also, because consistency in user interfaces is important, we strongly urge you
to put punctuation at the end of your validation messages. to put punctuation at the end of your validation messages.
When Are Validators Called?
---------------------------
After a form has been submitted, Django first checks to see that all the
required fields are present and non-empty. For each field that passes that
test *and if the form submission contained data* for that field, all the
validators for that field are called in turn. The emphasised portion in the
last sentence is important: if a form field is not submitted (because it
contains no data -- which is normal HTML behaviour), the validators are not
run against the field.
This feature is particularly important for models using
``models.BooleanField`` or custom manipulators using things like
``forms.CheckBoxField``. If the checkbox is not selected, it will not
contribute to the form submission.
If you would like your validator to *always* run, regardless of whether the
field it is attached to contains any data, set the ``always_test`` attribute
on the validator function. For example::
def my_custom_validator(field_data, all_data):
# ...
my_custom_validator.always_test = True
This validator will always be executed for any field it is attached to.
Ready-made Validators Ready-made Validators
--------------------- ---------------------