使用Django表单向导和缺少列表索引的问题有效地保存多个表单

时间:2011-09-01 21:45:05

标签: django django-forms django-formwizard

我在我的应用程序中使用Django的表单向导。总共有五种形式,但是只能提交三种或四种形式,因为可以基于特定条件跳过两种形式,或者可以基于特定条件跳过两种形式。

SessionWizardView的done方法返回的列表内容如下:

[<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不存在。我的问题是双重的;我如何能够克服不存在列表索引的问题,以及如何使代码更高效?

非常感谢

1 个答案:

答案 0 :(得分:0)

嗯,您可以使用form_list语句迭代for