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" значение должно быть целым числом.
Могу ли я узнать какое-либо решение для редактирования этой ошибки?
введите описание изображения здесь