2016-12-15 12 views
1

私のフォームには次のコードがあります。入力が数字ではなく動作しない場合は、電話機でエラーを表示するためにウィジェットを取得しようとしています。他のすべてが動作します。 type = numberがフォーム上のエラーを引き上げない理由は何ですか?djangoフォームウィジェット番号入力

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,]) 

また、必要に応じてカスタムバリデータを使用することを可能にするフィールドを定義します。