diff options
| author | Jacob Kaplan-Moss <jacob@jacobian.org> | 2007-02-25 17:16:38 +0000 |
|---|---|---|
| committer | Jacob Kaplan-Moss <jacob@jacobian.org> | 2007-02-25 17:16:38 +0000 |
| commit | cef22390862a2ad9ecdfbe3fabc74fbd81160b39 (patch) | |
| tree | 8b62c902009c416ac8b005c8b22ac92dffdd1705 | |
| parent | 5b66c74b32ad973b4b715f07ce50be203401b82b (diff) | |
Fixed #2104: allow somewhat nicer error messages in RequiredIfOtherFieldEquals validator. Thanks, Steven Armstrong
git-svn-id: http://code.djangoproject.com/svn/django/trunk@4577 bcc190cf-cafb-0310-a4f2-bffc1f526a37
| -rw-r--r-- | django/core/validators.py | 10 | ||||
| -rw-r--r-- | docs/forms.txt | 4 |
2 files changed, 10 insertions, 4 deletions
diff --git a/django/core/validators.py b/django/core/validators.py index a2f3dc3bc3..ebfbd3961e 100644 --- a/django/core/validators.py +++ b/django/core/validators.py @@ -312,11 +312,12 @@ class RequiredIfOtherFieldGiven(RequiredIfOtherFieldsGiven): RequiredIfOtherFieldsGiven.__init__(self, [other_field_name], error_message) class RequiredIfOtherFieldEquals(object): - def __init__(self, other_field, other_value, error_message=None): + def __init__(self, other_field, other_value, error_message=None, other_label=None): self.other_field = other_field self.other_value = other_value + other_label = other_label or other_value self.error_message = error_message or lazy_inter(gettext_lazy("This field must be given if %(field)s is %(value)s"), { - 'field': other_field, 'value': other_value}) + 'field': other_field, 'value': other_label}) self.always_test = True def __call__(self, field_data, all_data): @@ -324,11 +325,12 @@ class RequiredIfOtherFieldEquals(object): raise ValidationError(self.error_message) class RequiredIfOtherFieldDoesNotEqual(object): - def __init__(self, other_field, other_value, error_message=None): + def __init__(self, other_field, other_value, other_label=None, error_message=None): self.other_field = other_field self.other_value = other_value + other_label = other_label or other_value self.error_message = error_message or lazy_inter(gettext_lazy("This field must be given if %(field)s is not %(value)s"), { - 'field': other_field, 'value': other_value}) + 'field': other_field, 'value': other_label}) self.always_test = True def __call__(self, field_data, all_data): diff --git a/docs/forms.txt b/docs/forms.txt index fc10e3f17a..8c40eeb997 100644 --- a/docs/forms.txt +++ b/docs/forms.txt @@ -608,6 +608,10 @@ fails. If no message is passed in, a default message is used. order). If the given field does (or does not have, in the latter case) the given value, then the current field being validated is required. + An optional ``other_label`` argument can be passed which, if given, is used + in error messages instead of the value. This allows more user friendly error + messages if the value itself is not descriptive enough. + Note that because validators are called before any ``do_html2python()`` functions, the value being compared against is a string. So ``RequiredIfOtherFieldEquals('choice', '1')`` is correct, whilst |
