Использование набора форм в django formtool
Я создаю 8-шаговый мастер создания форм. 2 из моделей - квалификация и SSCE, и я использовал набор форм для создания нескольких входов формы
Фабрика форм
QualificationsFormSet = modelformset_factory(Qualifications, form=QualificationsForm, extra=5) SscesFormSet = modelformset_factory(Ssces, form=SSCESubjectForm, extra=5)
представление
class StudentWizard(LoginRequiredMixin, SessionWizardView):
form_list = FORMS
# template_name = 'admission/form_wizard.html'
file_storage = FileSystemStorage(location='/tmp/')
def get_form(self, step=None, data=None, files=None):
if step is None:
step = self.steps.current
form = super().get_form(step, data, files)
form.request = self.request
if step == '3':
form = QualificationsFormSet(data, queryset=Qualifications.objects.none())
elif step == '4':
form = SscesFormSet(data, queryset=Ssces.objects.none())
return form
def get_form_instance(self, step):
print(f"Current step: {step}")
if step == '4': # SSCE step
qualifications = self.get_cleaned_data_for_step('3')
print(f"Qualifications data: {qualifications}")
if qualifications:
certificates = [qual['certificate_obtained'] for qual in qualifications]
print(f"Certificates: {certificates}")
if not any(cert in ['WASC', 'SSCE', 'NECO', 'GCE'] for cert in certificates):
print("Skipping SSCE step")
return None # Skip the Ssces formset
return super().get_form_instance(step)
def get_context_data(self, form, **kwargs):
context = super().get_context_data(form=form, **kwargs)
if self.steps.current in ["3", "4"]:
context['formset'] = form
context['formset_with_widgets'] = [
[(field, field.field.widget.__class__.__name__) for field in form]
for form in context['formset'].forms
]
else:
context['fields_with_widgets'] = [
(field, field.field.widget.__class__.__name__) for field in form
]
return context
проблема в том, что другие формы работают хорошо вплоть до квалификации, где после отправки набора форм для квалификации мастер все равно возвращается к шаблону квалификации вместо того, чтобы перейти к шаблону ssce.html.
вывод первого набора форм введите описание изображения здесь
во-вторых, после первой отправки он возвращает пустую форму шаблона квалификации введите описание изображения здесь
Я использовал отладку, чтобы проверить, где могла возникнуть ошибка. Я заметил, что она находится вокруг get_form() и get_form_instance()
Ядро вроде в порядке. Не знаю, где я его испортил
пожалуйста, мне нужна помощь, чтобы исправить это. спасибо всем в ожидании