Django - 如何允许用户以科学计数法输入小数?

时间:2011-04-06 12:12:15

标签: python django django-models decimal scientific-notation

我希望用户能够输入标准的十进制值,如1.51或输入科学记数法的值,如4.08E + 13.

我在我的模型中设置了一个十进制字段但是当我尝试输入上面的示例时,我得到了这个验证消息:

“确保小数位数不超过3个。”

旁注:

我注意到Python已经支持这种格式:

>>> from decimal import Decimal
>>> print Decimal("4.08E+13")
4.08E+13

所以也许在Django中设置一些东西不会太难?

1 个答案:

答案 0 :(得分:2)

这看起来像一个Django错误,DecimalField.validate()对于正指数是错误的:

>>> from django.forms import DecimalField
>>> f = DecimalField(max_digits=10, decimal_places=1)
>>> f.validate(Decimal('1E+2'))
Traceback (most recent call last):
...
ValidationError: [u'Ensure that there are no more than 1 decimal places.']

您可能需要file a bug