diff options
| author | Jon Dufresne <jon.dufresne@gmail.com> | 2016-07-14 06:38:57 -0700 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2016-07-14 09:38:57 -0400 |
| commit | 76e19da5b0385d4f8afda509e0b60f77f7ffc4c2 (patch) | |
| tree | 77f1223ff8dbc5fcd7281ce8227adc29b36b1d52 | |
| parent | 944e66cb1db6614ef0644b9030dd1d75e950767c (diff) | |
Fixed #26890 -- Fixed IntegerField crash on Unicode numbers.
| -rw-r--r-- | django/forms/fields.py | 2 | ||||
| -rw-r--r-- | tests/forms_tests/field_tests/test_integerfield.py | 4 |
2 files changed, 5 insertions, 1 deletions
diff --git a/django/forms/fields.py b/django/forms/fields.py index a20caca870..4f17e42278 100644 --- a/django/forms/fields.py +++ b/django/forms/fields.py @@ -276,7 +276,7 @@ class IntegerField(Field): value = formats.sanitize_separators(value) # Strip trailing decimal and zeros. try: - value = int(self.re_decimal.sub('', str(value))) + value = int(self.re_decimal.sub('', force_text(value))) except (ValueError, TypeError): raise ValidationError(self.error_messages['invalid'], code='invalid') return value diff --git a/tests/forms_tests/field_tests/test_integerfield.py b/tests/forms_tests/field_tests/test_integerfield.py index d5c14857ed..cd648279a6 100644 --- a/tests/forms_tests/field_tests/test_integerfield.py +++ b/tests/forms_tests/field_tests/test_integerfield.py @@ -123,6 +123,10 @@ class IntegerFieldTest(FormFieldAssertionsMixin, SimpleTestCase): self.assertEqual(9223372036854775808, f.clean('9223372036854775808')) self.assertEqual(9223372036854775808, f.clean('9223372036854775808.0')) + def test_integerfield_unicode_number(self): + f = IntegerField() + self.assertEqual(50, f.clean('50')) + def test_integerfield_subclass(self): """ Class-defined widget is not overwritten by __init__() (#22245). |
