2014-09-12 26 views
0

我有一個應該接受科學記數法(例如9e-08)的forms.Form類的FloatField。在Django 1.6.x中,該字段不驗證並返回「請輸入有效的數字」。在Django 1.5.x中,字段不會引發這樣的異常,並且表單會被驗證。Django 1.6科學計數法FloatField「請輸入一個有效的數字」

場問題:

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

任何提示至於是什麼原因造成的Django 1.6.x的提高對我場的異常?

我已經覆蓋了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

你可以發佈追蹤? – 2014-09-12 16:33:31

回答

1

我的猜測是,你看到的是因爲Django 1.6在其表單中添加了HTML5 input types。 (請檢查生成的表單字段type="number"。)因此,瀏覽器正在檢查並拒絕您的值,可能是因爲它不識別科學記數法。

如果我的猜測是正確的,那麼簡單的解決方案就是自定義您的表格並將該字段的change the widget修改爲常規TextInput。另一種可能的選擇是將novalidate屬性添加到模板中的表單中。

欲瞭解更多討論,請參閱this thread on django-developers

+0

這是問題,這似乎是瀏覽器/ HTML5問題,而不是Django問題。我選擇關閉客戶端/瀏覽器表單驗證使用: Flash 2014-09-22 20:15:42

+0

另請注意,jQuery驗證插件干擾了HTML5輸入類型,不允許科學記數法提交 – Flash 2014-09-23 17:41:20