0

アプリで Django のフォーム ウィザードを使用しています。全部で 5 つのフォームがありますが、特定の条件に基づいて 2 つのフォームをスキップしたり、特定の条件に基づいて 2 つのフォームから 1 つのフォームをスキップしたりできるため、送信できるフォームは 3 つまたは 4 つだけです。

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 つのフォームのみが送信された場合、リスト インデックス 4 は存在せず、「リスト インデックスが範囲外です」というエラーが表示されます。3 つのフォームのみがリスト インデックス 3 および 4 で送信された場合も同様です存在しない。私の質問は 2 つあります。1 つは存在しないリスト インデックスの問題を解決する方法、2 つはコードをより効率的にする方法です。

どうもありがとう

4

1 に答える 1

0

ええと、form_listusingforステートメントを繰り返すことができます。

于 2011-09-01T23:00:53.787 に答える