2012-06-19 44 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

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