2012-06-19 55 views
0

我有一個簡單的自定義NumberField:自定義HTML5 NumberField總是驗證失敗

class NumberInput(forms.widgets.Input): 
    input_type = 'number' 

class NumberField(forms.DecimalField): 
    def __init__(self, *args, **kwargs): 
     self.widget = kwargs.get('widget', NumberInput) 
     self.min_value = kwargs.get('min', 0) 
     self.max_value = kwargs.get('max', 10) 
     self.step = kwargs.pop('step', 1) 
     super(NumberField, self).__init__(*args, **kwargs) 
    def widget_attrs(self, widget): 
     attrs = super(NumberField, self).widget_attrs(widget) 
     if self.min_value is not None: 
      attrs['min'] = self.min_value 
     if self.max_value is not None: 
      attrs['max'] = self.max_value 
     if self.step is not None: 
      attrs['step'] = self.step 
     return attrs 

我用它的形式,例如:

class TimeLog 
    time = NumberField(min_value = '0', max_value = '100000', step = '0.25') 

每次我嘗試並提交,我得到同樣的錯誤,輸入不分:

Ensure this value is greater than or equal to 0. 

頁面上的元素肯定有一個有效值:

<input step="0.25" name="time" min="0" max="100000" type="number" id="id_time" value="0.25"> 

什麼原因導致此失效?

回答

1

您正在使用字符串初始化它的最小值和最大值,而不是整數。

+0

男人,我覺得自己很愚蠢。 –