Не срабатывает валидатор и не отображается сообщение об ошибке в django

124Borman

Новичок
Пользователь
Янв 26, 2021
32
1
8
Есть форма, связанная с моделью:
Python:
class paidparkingForm(forms.ModelForm):
  class Meta:
      model = paidparking
      fields = ['adress','carnumber','amountoftime', 'price', 'email','telephone', 'startofvalidityperiod', 'expirationdate']
      widgets = {
          'adress': forms.Select(attrs={"class": "form-control form", "id": "exampleFormControlSelect1"}),
          'carnumber': forms.TextInput(attrs={"class": "form-control form-control-lg form"}),
          'price': forms.NumberInput(attrs={"class": "form-control form-control-lg form", "readonly": 0}),
          'email': forms.EmailInput(attrs={"class": "form-control form-control-lg form"}),
          'telephone': forms.TextInput(attrs={"class": "form-control form-control-lg form"}),
      }
Импортировал import re и from django.core.exceptions import ValidationError

Добавил валидатор

Python:
  def clean_telephone(self):
      telephone = self.cleaned_data['telephone']
      if re.match('^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$', telephone):
          raise forms.ValidationError('Телефон должен иметь формат 891665283219')
      return telephone
Валидатор не срабатывает и не выводит никаких ошибок

На страницу вывожу вот так
Python:
                                    <div class="form-group">
                    <h5>Номер телефона</h5>
    <label for="{{ formparking.telephone.id_for_label }}"></label>
      {{ formparking.telephone }}
      <div class="invalid-feedback">
      {{ formparking.telephone.errors }}
      </div>
  </div>
 
  • Мне нравится
Реакции: Student

stud_55

Модератор
Команда форума
Модератор
Апр 3, 2020
1 522
672
113
В вашем коде ValidationError будет вызываться в случае если телефон соответствует регулярному выражению (то есть в случае правильного номера телефона).
Чтобы валидатор срабатывал на неправильные номера телефонов попробуйте поменять условие на обратное:
Python:
 if not re.match('^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$', telephone):
 

Форум IT Специалистов