Валидаторы полей модели Django вообще не работают - PullRequest
0 голосов
/ 16 февраля 2019

Я не могу понять, почему мои валидаторы вообще не работают.

  1. Форма недействительна
  2. Модель не поднимается ValidationError при сохранении

Для ввода: "123456sdad"

У меня есть модель с полем broker_ico:

REGEX_ICO = r"\d{6,8}"

broker_ico = models.CharField(max_length=100, verbose_name='IČO',
                              validators=[RegexValidator(REGEX_ICO)])

Я перезаписал метод сохранения:

def save(self, **kwargs):
    print('full clean')
    self.full_clean()
    super().save(**kwargs)

Более того, form является ModelForm:

class BusinessCaseDocumentForm(ModelForm):

    class Meta:
        model = BusinessCaseDocument
        exclude = ['id','business_case']

    def __init__(self, *args, **kwargs):
        super(BusinessCaseDocumentForm, self).__init__(*args, **kwargs)
        for field_name, field in self.fields.items():
            fs_helpers.add_widget_attribute('class', 'form-control', field)

UpdateView:

class BusinessCaseDocumentUpdateView(SuccessMessageMixin, UpdateView):
    model = BusinessCaseDocument
    form_class = BusinessCaseDocumentForm
    template_name = "business_cases/businesscase_documents/create.html"
    success_message = "Podklad k obchodnému prípadu bol upravený"

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['businesscase'] = self.object.business_case  # TODO self.businesscase set
        return context

    def get_success_url(self):
        return reverse("business_cases:list")

Можете ли вы увидеть, в чем проблема?

...