On Tue, Aug 27, 2013 at 2:43 PM, Derrick Jackson
<derrick.jackso...@gmail.com> wrote:
> Thanks Tom.  I actually tried that at one point and this is the error I
> received:  not all arguments converted during string formatting.

To fix your problem, ensure that your error messages have the same
format specifiers as the defaults, which are here:

        'invalid': _('Enter a number.'),
        'max_value': _('Ensure this value is less than or equal to
%(limit_value)s.'),
        'min_value': _('Ensure this value is greater than or equal to
%(limit_value)s.'),
        '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.')


The problem arises because the documentation seems incorrect for 1.5
(and trunk):

"""
The max_value and min_value error messages may contain
%(limit_value)s, which will be substituted by the appropriate limit.
"""

https://docs.djangoproject.com/en/1.5/ref/forms/fields/#decimalfield

where as the code indicates that min_value, max_value, max_digits,
max_decimal_places and max_whole_digits all take a format argument:

https://github.com/django/django/blob/stable/1.5.x/django/forms/fields.py#L260

Furthermore, the docs say "may contain", which is very misleading, as
the OP has shown, the qualifier has to be "MUST contain" - there is
nothing optional about it:

> $ python
Python 2.7.5 (default, Sep 13 2013, 10:44:18)
[GCC 4.2.1 20070831 patched [FreeBSD]] on freebsd9
Type "help", "copyright", "credits" or "license" for more information.
>>> from django import forms
>>> class BadForm(forms.Form):
...   dec = forms.DecimalField(max_digits=3,
error_messages={'max_digits':'too many digits'})
...
>>> b=BadForm({'dec': '12.3456789'})
>>> b.is_valid()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File 
"/usr/home/tom/tmp/djforms15/env/lib/python2.7/site-packages/django/forms/forms.py",
line 126, in is_valid
    return self.is_bound and not bool(self.errors)
  File 
"/usr/home/tom/tmp/djforms15/env/lib/python2.7/site-packages/django/forms/forms.py",
line 117, in _get_errors
    self.full_clean()
  File 
"/usr/home/tom/tmp/djforms15/env/lib/python2.7/site-packages/django/forms/forms.py",
line 272, in full_clean
    self._clean_fields()
  File 
"/usr/home/tom/tmp/djforms15/env/lib/python2.7/site-packages/django/forms/forms.py",
line 287, in _clean_fields
    value = field.clean(value)
  File 
"/usr/home/tom/tmp/djforms15/env/lib/python2.7/site-packages/django/forms/fields.py",
line 155, in clean
    self.validate(value)
  File 
"/usr/home/tom/tmp/djforms15/env/lib/python2.7/site-packages/django/forms/fields.py",
line 320, in validate
    raise ValidationError(self.error_messages['max_digits'] % self.max_digits)
TypeError: not all arguments converted during string formatting



Cheers

Tom

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAFHbX1J2szHu6YTwpo%3DaOY2uN2XaQ08sqC6CvvJr9oO6LwTzEg%40mail.gmail.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to