summaryrefslogtreecommitdiff
path: root/django/forms
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2013-04-13 18:20:01 +0200
committerClaude Paroz <claude@2xlibre.net>2013-04-13 18:55:50 +0200
commitbe9ae693c46021fd3a70c0ec21dd566960b29ffb (patch)
treebd09e1021b62dcdfc44b96de7230101277400eb9 /django/forms
parent9ac4dbd7b53d187ca54f28e247d3a120660938ca (diff)
Fixed #17840 -- Generalized named placeholders in form error messages
Also fixed plural messages for DecimalField.
Diffstat (limited to 'django/forms')
-rw-r--r--django/forms/fields.py27
-rw-r--r--django/forms/models.py8
2 files changed, 24 insertions, 11 deletions
diff --git a/django/forms/fields.py b/django/forms/fields.py
index 0a0aa12f98..146a10d635 100644
--- a/django/forms/fields.py
+++ b/django/forms/fields.py
@@ -292,9 +292,18 @@ class FloatField(IntegerField):
class DecimalField(IntegerField):
default_error_messages = {
'invalid': _('Enter a number.'),
- 'max_digits': _('Ensure that there are no more than %s digits in total.'),
- 'max_decimal_places': _('Ensure that there are no more than %s decimal places.'),
- 'max_whole_digits': _('Ensure that there are no more than %s digits before the decimal point.')
+ 'max_digits': ungettext_lazy(
+ 'Ensure that there are no more than %(max)s digit in total.',
+ 'Ensure that there are no more than %(max)s digits in total.',
+ 'max'),
+ 'max_decimal_places': ungettext_lazy(
+ 'Ensure that there are no more than %(max)s decimal place.',
+ 'Ensure that there are no more than %(max)s decimal places.',
+ 'max'),
+ 'max_whole_digits': ungettext_lazy(
+ 'Ensure that there are no more than %(max)s digit before the decimal point.',
+ 'Ensure that there are no more than %(max)s digits before the decimal point.',
+ 'max'),
}
def __init__(self, max_value=None, min_value=None, max_digits=None, decimal_places=None, *args, **kwargs):
@@ -341,11 +350,15 @@ class DecimalField(IntegerField):
whole_digits = digits - decimals
if self.max_digits is not None and digits > self.max_digits:
- raise ValidationError(self.error_messages['max_digits'] % self.max_digits)
+ raise ValidationError(self.error_messages['max_digits'] % {
+ 'max': self.max_digits})
if self.decimal_places is not None and decimals > self.decimal_places:
- raise ValidationError(self.error_messages['max_decimal_places'] % self.decimal_places)
- if self.max_digits is not None and self.decimal_places is not None and whole_digits > (self.max_digits - self.decimal_places):
- raise ValidationError(self.error_messages['max_whole_digits'] % (self.max_digits - self.decimal_places))
+ raise ValidationError(self.error_messages['max_decimal_places'] % {
+ 'max': self.decimal_places})
+ if (self.max_digits is not None and self.decimal_places is not None
+ and whole_digits > (self.max_digits - self.decimal_places)):
+ raise ValidationError(self.error_messages['max_whole_digits'] % {
+ 'max': (self.max_digits - self.decimal_places)})
return value
def widget_attrs(self, widget):
diff --git a/django/forms/models.py b/django/forms/models.py
index 6a4b8b80e4..5e7797809a 100644
--- a/django/forms/models.py
+++ b/django/forms/models.py
@@ -1039,9 +1039,9 @@ class ModelMultipleChoiceField(ModelChoiceField):
hidden_widget = MultipleHiddenInput
default_error_messages = {
'list': _('Enter a list of values.'),
- 'invalid_choice': _('Select a valid choice. %s is not one of the'
+ 'invalid_choice': _('Select a valid choice. %(value)s is not one of the'
' available choices.'),
- 'invalid_pk_value': _('"%s" is not a valid value for a primary key.')
+ 'invalid_pk_value': _('"%(pk)s" is not a valid value for a primary key.')
}
def __init__(self, queryset, cache_choices=False, required=True,
@@ -1063,12 +1063,12 @@ class ModelMultipleChoiceField(ModelChoiceField):
try:
self.queryset.filter(**{key: pk})
except ValueError:
- raise ValidationError(self.error_messages['invalid_pk_value'] % pk)
+ raise ValidationError(self.error_messages['invalid_pk_value'] % {'pk': pk})
qs = self.queryset.filter(**{'%s__in' % key: value})
pks = set([force_text(getattr(o, key)) for o in qs])
for val in value:
if force_text(val) not in pks:
- raise ValidationError(self.error_messages['invalid_choice'] % val)
+ raise ValidationError(self.error_messages['invalid_choice'] % {'value': val})
# Since this overrides the inherited ModelChoiceField.clean
# we run custom validators here
self.run_validators(value)