Проверка фабрики Django Inlineformset не работает - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть две формы, одна - информация о поставщике, другая - контакт для поставщиков, поэтому я использую inlineformset_factory, чтобы объединить форму и добавить контакты, когда я добавляю поставщика, и эта функция работает хорошо.Единственная проблема - показать ошибку проверки формы для формы поставщика, но не для контактов (inlineformset).

Forms.py

class SupplierForm(forms.ModelForm):

class Meta:
    model = Supplier
    fields = ('category','name','alternate_name','logo','address1','address2','city','zip','region','region_code','country','country_code','detail')

class ContactForm(forms.ModelForm):

class Meta:
    model = Contact
    fields = ('contact_type','job_title','first_name','last_name','phone','email','skype','wechat')

def clean(self):
    if any(self.errors):
        return

ContactFormSet = forms.inlineformset_factory(Supplier, Contact, form=ContactForm, extra=1)

Views.py

class CreateSupplierView(LoginRequiredMixin,CreateView):

form_class = SupplierForm
model = Supplier

def form_valid(self, form):
    context = self.get_context_data()
    contacts = context['contacts']
    with transaction.atomic():
        self.object = form.save()

        if contacts.is_valid():
            contacts.instance = self.object
            contacts.save()
    return super(CreateSupplierView, self).form_valid(form)

def get_context_data(self, **kwargs):
    context = super(CreateSupplierView, self).get_context_data(**kwargs)

    if self.request.POST:
        context['contacts'] = ContactFormSet(self.request.POST)
    else:
        context['contacts'] = ContactFormSet()
    return context

Если форма поставщика недействительна, она пересылает ее, чтобы добавить / редактировать форму и показать ошибку, но если форма поставщика исправна, единственный контакт имеет ошибку, то он перенаправляет ее в список поставщиков и не показывает никакой ошибки.

как показать ту же форму редактирования / добавления с ошибкой, если форма контактов недействительна?

...