我在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
答案 0 :(得分:1)
我的猜测是你看到了这个,因为Django 1.6将HTML5 input types添加到了他们的表单中。 (检查生成的type="number"
表单字段。)因此,浏览器正在检查并拒绝您的值,大概是因为它不能识别科学记数法。
如果我的猜测是正确的,那么简单的解决方案就是自定义您的表单,并将该字段change the widget定制为常规TextInput
。另一种可能的选择是在模板中将novalidate
属性添加到表单中。
有关详细讨论,请参阅this thread on django-developers。