Fixed #29006 -- Fixed DecimalField.clean() crash on sNaN values.
This commit is contained in:
parent
1c95737ebe
commit
c886f3dee3
@ -351,7 +351,7 @@ class DecimalField(IntegerField):
|
|||||||
super().validate(value)
|
super().validate(value)
|
||||||
if value in self.empty_values:
|
if value in self.empty_values:
|
||||||
return
|
return
|
||||||
if not math.isfinite(value):
|
if value.is_nan() or not math.isfinite(value):
|
||||||
raise ValidationError(self.error_messages['invalid'], code='invalid')
|
raise ValidationError(self.error_messages['invalid'], code='invalid')
|
||||||
|
|
||||||
def widget_attrs(self, widget):
|
def widget_attrs(self, widget):
|
||||||
|
@ -51,6 +51,7 @@ class DecimalFieldTest(FormFieldAssertionsMixin, SimpleTestCase):
|
|||||||
f = DecimalField(max_digits=4, decimal_places=2)
|
f = DecimalField(max_digits=4, decimal_places=2)
|
||||||
values = (
|
values = (
|
||||||
'-NaN', 'NaN', '+NaN',
|
'-NaN', 'NaN', '+NaN',
|
||||||
|
'-sNaN', 'sNaN', '+sNaN',
|
||||||
'-Inf', 'Inf', '+Inf',
|
'-Inf', 'Inf', '+Inf',
|
||||||
'-Infinity', 'Infinity', '+Infinity',
|
'-Infinity', 'Infinity', '+Infinity',
|
||||||
'a', 'łąść', '1.0a', '--0.12',
|
'a', 'łąść', '1.0a', '--0.12',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user