0

表格.py

class ContactForm(forms.ModelForm):
     class Meta:
        model = Contact
    def clean_phone_no(self):
        cd=self.cleaned_data
        phone_no=cd.get('phone_no')   
        if(phone_no.isalnum()): 
            raise forms.ValidationError("Please enter a valid phone number")

我应该将文本字段验证为数字字段。

1.它不应该带符号。

2.它不应该带字母数字字符

3.应只取数字,不需要限制。

谷歌搜索验证,没有得到reuired的东西。任何人都可以帮助我这样做。

4

2 回答 2

2

这应该适用于您的情况。没有任何正则表达式和东西。

class ContactForm(forms.ModelForm):
    class Meta:
        model = Contact

    def clean_phone_no(self):
        phone_no = self.cleaned_data.get('phone_no', None)
        try:
            int(phone_no)
        except (ValueError, TypeError):
            raise ValidationError('Please enter a valid phone number')
        return phone_no

我正在使用简单的 Pythontry...catch并尝试将输入的类型转换为 Integer。任何无法转换的字符串int都会引发验证错误。

于 2013-05-07T08:23:48.773 回答
2
from django.core.exceptions import ValidationError

def clean_client_phone(self):
    client_phone = self.cleaned_data.get('client_phone', None)
    try:
        if long(client_phone) and not client_phone.isalpha():
            min_length = 10
            max_length = 13
            ph_length = str(client_phone)
            if len(ph_length) < min_length or len(ph_length) > max_length:
                raise ValidationError('Phone number length not valid')

    except (ValueError, TypeError):
        raise ValidationError('Please enter a valid phone number')
    return client_phone
于 2013-12-09T07:25:29.070 回答