In django 1.11 this code works.
from django.forms.fields import DecimalField
>>> DecimalField(max_digits=8, decimal_places=7).clean('0')
Decimal('0')
>>> DecimalField(max_digits=8, decimal_places=7).clean('0.0')
Decimal('0.0')
>>> DecimalField(max_digits=8, decimal_places=7).clean('0E+1')
Decimal('0E+1')
But in django 2.0.13 we have
>>> DecimalField(max_digits=8, decimal_places=7).clean('0E+1')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Users/amokaddim/e/fh/lib/python3.8/site-packages/django/forms/fields.py", line 150, in clean
self.run_validators(value)
File "/Users/amokaddim/e/fh/lib/python3.8/site-packages/django/forms/fields.py", line 141, in run_validators
raise ValidationError(errors)
django.core.exceptions.ValidationError: <exception str() failed>
I have two questions,
1. Is there any way I can prevent this validation error from happening in Django 2.0? Any flag or option that will prevent this?
2. We are upgrading Django to the latest. Will it be solved in the later version?
Now I have a override of the to_python method. It just calls DecimalField.normalize(). But I am not sure if this is the right way to do it.