У меня есть FormWizard, в котором мне нужны данные из первой формы для передачи в конструктор второй формы, чтобы я мог построить динамическую форму.
Я могу получить данные первой формы с помощью process_step FormWizard.
Я создаю поля второй формы с помощью вызова базы данных из списка полей.
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 ?
мой результирующий код:
Я отказался от init формы и переключил его на определение CreateQuestions. Затем с помощью переопределения мастера 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