django表单小部件号输入

时间:2016-12-15 21:48:09

标签: django django-forms

我在forms.py中有以下代码我试图在手机上设置小部件如果输入不是数字但是它不起作用就会出错。其他一切都有效。 type = number的任何原因都没有在表单上引起错误?

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'}),

        }

1 个答案:

答案 0 :(得分:1)

  

如果输入是,我试图让手机上的小部件发出错误   不是数字,但它不起作用。

我怀疑您的电话号码字段未定义为模型中的整数字段,如果是,验证检查将确保未输入非整数数据。

基于这个假设,你应该过度使用场地而不是小部件。使用field_classes元属性或明确定义字段

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

如果需要,它还允许您使用自定义验证器。