У меня есть 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