Django 1.6科学记谱法FloatField“请输入有效数字”

时间:2014-09-12 14:55:59

标签: django python-2.7 django-forms

我在forms.Form类中有一个FloatField,它应该接受科学记数法(例如9e-08)。在Django 1.6.x中,此字段不验证并返回“请输入有效数字”。在Django 1.5.x中,该字段不会引发此类异常,并且表单会生效。

有问题的字段:

vapor_pressure = forms.FloatField(
        label='Vapor Pressure',
        initial=9e-8
)

有关导致Django 1.6.x在我的字段上引发异常的原因的任何提示吗?

我已经覆盖了我的Form类中的is_valid()方法来记录is_valid()结果,而这不是Django引发异常的地方:

def is_valid(self):
    #Run validation
    valid = super(ModelInp, self).is_valid()
    print valid
    if not valid:
        print "MODEL NOT VALID"
        return True
    else:
        print "MODEL VALID"
        return True

1 个答案:

答案 0 :(得分:1)

我的猜测是你看到了这个,因为Django 1.6将HTML5 input types添加到了他们的表单中。 (检查生成的type="number"表单字段。)因此,浏览器正在检查并拒绝您的值,大概是因为它不能识别科学记数法。

如果我的猜测是正确的,那么简单的解决方案就是自定义您的表单,并将该字段change the widget定制为常规TextInput。另一种可能的选择是在模板中将novalidate属性添加到表单中。

有关详细讨论,请参阅this thread on django-developers