From cc957cb16cfdad7e6c9e97dc885fc415abbf5eaa Mon Sep 17 00:00:00 2001 From: Daniel Langer Date: Fri, 6 Sep 2013 16:54:48 +0000 Subject: Fixed #4287 -- Fixed NaN and +/- Infinity handling in FloatField NaN, +Inf, and -Inf are no longer valid values for FloatFields. --- django/forms/fields.py | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'django/forms') diff --git a/django/forms/fields.py b/django/forms/fields.py index c06352a964..7a59a3d664 100644 --- a/django/forms/fields.py +++ b/django/forms/fields.py @@ -279,6 +279,15 @@ class FloatField(IntegerField): raise ValidationError(self.error_messages['invalid'], code='invalid') return value + def validate(self, value): + super(FloatField, self).validate(value) + + # Check for NaN (which is the only thing not equal to itself) and +/- infinity + if value != value or value in (Decimal('Inf'), Decimal('-Inf')): + raise ValidationError(self.error_messages['invalid'], code='invalid') + + return value + def widget_attrs(self, widget): attrs = super(FloatField, self).widget_attrs(widget) if isinstance(widget, NumberInput): -- cgit v1.3