Я использую Мастер форм Джанго в своем приложении. Всего существует пять форм, однако можно отправить только три или четыре, так как две формы могут быть пропущены в зависимости от конкретного условия или из двух одна форма может быть пропущена в зависимости от конкретного условия.
Содержимое списка, возвращаемого методом done SessionWizardView, выглядит следующим образом:
[<test.myapp.models.AForm object at 0x0177EC10>, <test.myapp.models.BForm object at 0x01796150>, <test.myapp.models.CForm object at 0x01796530>, <test.myapp.models.DForm object at 0x01796910>, <test.myapp.models.EForm object at 0x01333540>]
Для сохранения форм я делаю следующее:
a = form_list[0].save(commit=False)
a.save()
b = form_list[1].save(commit=False)
b.parent_id = a
b.save()
c = form_list[2].save(commit=False)
c.parent_id = a
c.save()
d = form_list[3].save(commit=False)
d.parent_id = a
d.save()
d = form_list[4].save(commit=False)
d.parent_id = a
d.save()
Как вы сможете сказать, если отправлены только четыре формы, индекс списка 4 не существует, и я получаю ошибку «индекс списка вне диапазона», как и в случае, если в список индекса передается только три формы. 3 и 4 не существуют. Мой вопрос в два раза; один, как я могу преодолеть проблему несуществующих списочных индексов, и два, как я могу сделать код более эффективным?
Большое спасибо