Django forms.py поле charfield номера телефона принимает только число/целое число, я сделал это, но ошибка валидации не работает, перейдите к def validate(self)

my forms.py

from django import forms
from .models import Account

FRUIT_CHOICES= [
    ('Afghanistan', 'Afghanistan'),
    ('Albania', 'Albania'),
    ('Algeria', 'Algeria'),
    ('Andorra', 'Andorra'),
    ('Angola', 'Angola'),
    ('Antigua and Barbuda', 'Antigua and Barbuda'),
    ('Argentina', 'Argentina'),
    ('Armenia', 'Armenia'),
    ('Australia', 'Australia'),
    ('Austria', 'Austria'),
    ('Azerbaijan', 'Azerbaijan'),
    ('Bahamas', 'Bahamas'),
    ('Bahrain', 'Bahrain'),
    ('Bangladesh', 'Bangladesh'),
    ('Barbados', 'Barbados'),
    ('Malaysia', 'Malaysia'),
    ]

class RegistrationForm(forms.ModelForm):
    
    password=forms.CharField(widget=forms.PasswordInput())
    confirm_password=forms.CharField(widget=forms.PasswordInput())
    phone_number=forms.CharField(widget=forms.TextInput(attrs={
        'placeholder':'Enter Phone Number'
    }))
    country=forms.CharField(widget=forms.Select(choices=FRUIT_CHOICES))
    email=forms.EmailField(help_text="We'll never share your email with anyone else")
    class Meta:
        model=Account
        fields=['first_name','last_name','email','phone_number','password']    
    
    def __init__(self,*args,**kwargs):  
        super().__init__(*args,**kwargs)
        
        self.fields['first_name'].widget.attrs['placeholder']='Enter First Name'
        self.fields['last_name'].widget.attrs['placeholder']='Enter last Name'
        self.fields['email'].widget.attrs['placeholder']='Enter Email'
        self.fields['password'].widget.attrs['placeholder']='Enter Password'
        self.fields['confirm_password'].widget.attrs['placeholder']='Repeat Password'
        for abc in self.fields:
            self.fields[abc].widget.attrs['class']='form-control'

 
    def clean(self):      
        cleanned_data=super().clean()  
        password=cleanned_data.get('password')  
        confirm_password=cleanned_data.get('confirm_password')
enter image description here
        if password != confirm_password:
            raise forms.ValidationError("Password and confirm password does not match")
    
    **def validate(self): 
        cleanned_data=super().clean()
        phone_number=cleanned_data.get('phone_number')
        if phone_number.is_number() == False:
            raise forms.VallidationError("Please enter valid phone number, Example=012111111")**

хорошо, что касается этой функции

def validate(self): #this is working, the charfield only accept integer
        cleanned_data=super().clean()
        phone_number=cleanned_data.get('phone_number')
        if phone_number.is_number() == False:
            raise forms.VallidationError("Please enter valid phone number, Example=012111111")

Предположительно я получу ошибку, если номер телефона содержит алфавит "Please enter valid phone number, Example=01211111111", верно?

Но на выходе получилось

номер_телефона "gbfhbgf" значение должно быть целым числом.

Могу ли я узнать какое-либо решение для редактирования этой ошибки?

введите описание изображения здесь

Вернуться на верх