DecimalField max_digits counts negative sign as a digit.
In [5680], the validation of decimal values for DecimalField was changed to fix #4807, which also introduced a bug in validating negative decimals, in that it counts the - sign as one of the digits:
>>> import django.core.validators
>>> v = django.core.validators.IsValidDecimal(max_digits=5, decimal_places=2)
>>> v('999.99', {})
>>> v('-99.99', {})
>>> v('-999.99', {}) # This should succeed
Traceback (most recent call last):
...
django.core.validators.ValidationError: [u'Please enter a valid decimal number with at most 5 total digits.']
This error affects django.core.validators.IsValidDecimal and django.newforms.fields.DecimalField.
The attached patch fixes the problem and adds a regression test for it
Patch