我有一个 FormWizard,我需要将第一个表单中的数据传递给第二个表单的构造函数,以便构建动态表单。
我可以通过 FormWizard 的 process_step 获取第一个表单的数据。
我使用字段列表的数据库调用来创建第二种形式的字段。
class ConditionWizardDynamicQuestions(forms.Form):
def __init__(self, DynamicQuestions=None, *args, **kwargs):
super(ConditionWizardDynamicQuestions, self).__init__(*args, **kwargs)
questions = Question.objects.filter(MYDATA = DATA_FROM_1STFORM)
for q in questions:
dynField = FieldFactory(q)
self.fields[q.label] = dynField
我怎样才能通过DATA_FROM_1STFORM?
我的结果代码:我放弃了表单的初始化,并将其切换到 CreateQuestions def。然后使用向导的 get_form 覆盖在创建后更改表单。
class ConditionWizard(SessionFormWizard):
def get_form(self, request, storage, step=None, data=None, files=None):
form = super(ConditionWizard, self).get_form(request, storage, step, data, files)
stepIndex = self.get_step_index(request, storage, step)
if stepIndex == 1:
form.CreateQuestions(request.session["WizardConditionId"])
if stepIndex == 3:
form.fields['hiddenConditionId'].initial = request.session["WizardConditionId"]
form.fields['medicationName'].queryset = Medication.objects.filter(condition = request.session["WizardConditionId"])
return form