2016-12-15 2 views
1

У меня есть приведенный ниже код в моих формах.py. Я пытаюсь получить виджет на телефоне, чтобы выставить ошибку, если вход не является числом, но он не работает. Все остальное работает. Любая причина, по которой тип = номер не вызывает ошибку в форме?django form widget number input

class UserProfileForm(forms.ModelForm): 


    class Meta: 
     model = UserProfile 
     exclude = ('user',) 

     widgets = { 
      'first_name': forms.TextInput(attrs={'maxlength':100, 'required': True}), 
      'last_name': forms.TextInput(attrs={'maxlength': 100, 'required': True}), 
      'phone': forms.NumberInput(attrs={'minlength': 10, 'maxlength': 15, 'required': True, 'type': 'number',}),  
      'date_of_birth': forms.DateInput(attrs={'minlength': 10, 'maxlength': 10, 'required': True}), 

      'country': CountrySelectWidget(attrs={'country': 'CountrySelectWidget'}), 

     } 
+0

Вы прочитали это в документации [NumberInput] (https://docs.djangoproject.com/en/1.10/ref/forms/widgets/#django.forms.NumberInput)? – ettanany

+0

@ettanany Я прочитал его. можете ли вы предложить, как еще я могу получить форму для подтверждения ввода? – keno

ответ

0

Я пытаюсь получить виджет на телефоне, чтобы поставить ошибку, если вход не цифры, но он не работает.

Я подозреваю, что поле вашего номера телефона не определено как целое поле в вашей модели, если это было так, проверка проверки гарантирует, что не целочисленные данные не будут введены.

Исходя из этого предположения, вы должны быть на верховой езде на поле, а не на виджет. Либо использовать мета атрибут field_classes или определить поле Явно

class UserProfileForm(forms.ModelForm): 
    phone = forms.IntegerField(validators = [custom_validator,]) 

Это также позволяет использовать пользовательские валидатор, если это необходимо.