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