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

Человек, я чувствую себя глупо. –

Смежные вопросы