Найти - Пользователи
Полная версия: DecimalField не валидирует NaN и inf
Начало » Django » DecimalField не валидирует NaN и inf
1
Lolka
Случайно заметил такое явление: когда форма с DecimalField валидируется, если в поле вписано NaN или inf вываливается TypeError
File "/usr/lib/python2.5/site-packages/django/forms/forms.py" in full_clean
224. value = field.clean(value)
File "/usr/lib/python2.5/site-packages/django/forms/fields.py" in clean
254. decimals = abs(exponent)

Exception Type: TypeError at ...
Exception Value: bad operand type for abs(): 'str'
Катит на тикет или я что то не так делаю?
Кстати, вот интересно это http://code.djangoproject.com/ticket/7777
Ferroman
И не должна. NaN - это в джаваскрипте, а в питоне None. NaN понимается как строка, тогда как форма ждёт decimal.
Если передавать None и указать в опциях поля null=Truе - всё будет ок.
slivlen
Ferroman
И не должна. NaN - это в джаваскрипте, а в питоне None.
В питоне это float('nan')(или Decimal(“NaN”)). А питоновский None в JS - null.
Ferroman
Ммм, что-то я запутался.

NaN в джаваскрипт - “Not-a-Number”, в питоне/django аналога не знал - не попадалось.
А так, да None === null

В джанго есть похожий тикет как у топикстартера.
Lolka
Все верно вы говорите. И как раз таки в результате работы JS в поле попадает NaN. Это нормально. Дело в другом. Любая строка не проходит проверки, как это положено быть – пишет “Введите число”. Но NaN и inf вызывают вместо ValidationError райзят TypeError, т.е. приложение не отрабатывает валидацию.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB