diff options
| author | Kamil Turek <kamil.turek@hotmail.com> | 2022-09-16 21:43:12 +0200 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2022-09-17 10:02:55 +0200 |
| commit | ae509f8f0804dea0eea89e27329014616c9d4cc0 (patch) | |
| tree | 2b16a90aae0b0e3d094b4d3b1481647770c2401b | |
| parent | c11336cd990e155371a5185cf3bd6942cad8d9da (diff) | |
Fixed #34014 -- Fixed DecimalValidator validating 0 in positive exponent scientific notation.
Thanks Shiplu Mokaddim for the report.
| -rw-r--r-- | django/core/validators.py | 6 | ||||
| -rw-r--r-- | tests/validators/tests.py | 1 |
2 files changed, 5 insertions, 2 deletions
diff --git a/django/core/validators.py b/django/core/validators.py index 473203a67e..c73490588d 100644 --- a/django/core/validators.py +++ b/django/core/validators.py @@ -486,8 +486,10 @@ class DecimalValidator: self.messages["invalid"], code="invalid", params={"value": value} ) if exponent >= 0: - # A positive exponent adds that many trailing zeros. - digits = len(digit_tuple) + exponent + digits = len(digit_tuple) + if digit_tuple != (0,): + # A positive exponent adds that many trailing zeros. + digits += exponent decimals = 0 else: # If the absolute value of the negative exponent is larger than the diff --git a/tests/validators/tests.py b/tests/validators/tests.py index f9ffdfd605..02bee30ac1 100644 --- a/tests/validators/tests.py +++ b/tests/validators/tests.py @@ -548,6 +548,7 @@ TEST_DATA = [ Decimal("70E-6"), ValidationError, ), + (DecimalValidator(max_digits=2, decimal_places=1), Decimal("0E+1"), None), # 'Enter a number.' errors *[ ( |
