У меня есть 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 формы и переключил его на def 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