summaryrefslogtreecommitdiff
path: root/django/forms/fields.py
diff options
context:
space:
mode:
authorJon Dufresne <jon.dufresne@gmail.com>2015-01-27 12:41:59 -0800
committerClaude Paroz <claude@2xlibre.net>2015-02-27 12:23:21 +0100
commit3b966c2b73c420222d1524cda03c1a5626c90fe6 (patch)
tree198d303472c07adbf590e1ab4db4085f012b791e /django/forms/fields.py
parentfa9cb5dcdc816fe0e606b8f1020d53526e08b0d4 (diff)
Fixed #24229 -- Changed IntegerField to clean floats representing integers
Diffstat (limited to 'django/forms/fields.py')
-rw-r--r--django/forms/fields.py4
1 files changed, 3 insertions, 1 deletions
diff --git a/django/forms/fields.py b/django/forms/fields.py
index 6d1c14586e..44bbfd8e6f 100644
--- a/django/forms/fields.py
+++ b/django/forms/fields.py
@@ -236,6 +236,7 @@ class IntegerField(Field):
default_error_messages = {
'invalid': _('Enter a whole number.'),
}
+ re_decimal = re.compile(r'\.0*\s*$')
def __init__(self, max_value=None, min_value=None, *args, **kwargs):
self.max_value, self.min_value = max_value, min_value
@@ -259,8 +260,9 @@ class IntegerField(Field):
return None
if self.localize:
value = formats.sanitize_separators(value)
+ # Strip trailing decimal and zeros.
try:
- value = int(str(value))
+ value = int(self.re_decimal.sub('', str(value)))
except (ValueError, TypeError):
raise ValidationError(self.error_messages['invalid'], code='invalid')
return value