Динамически заполнять набор форм ChoiceField в Formwizard - PullRequest
0 голосов
/ 12 мая 2019

Я пытаюсь заполнить ChoiceField в FormSet информацией из предыдущего шага (немного относящейся к моему последнему заданному вопросу). Я почти там, но не могу инициализировать список:

def get_form(self, step=None, data=None, files=None):

        form = super(FormWizardView, self).get_form(step, data, files)

        step = step or self.steps.current

        if step == 'pages':
            form_class = self.form_list[step]
            form1_cleaned_data = self.get_cleaned_data_for_step('agenda')
            formset = PagesFormSet()

            loan_choices = []


            for form in formset.forms:
                if form1_cleaned_data:
                    form.fields['agenda_select'].choices = [item for item in form1_cleaned_data.items()]

            # print(form.fields['agenda_select'])

            return PagesFormSet(data = data)

        return super(FormWizardView, self).get_form(step, data, files)

Список просто не отображается. Тем не менее, печать в консоли работает. Если я просто возвращаю набор форм вместо PagesFormSet, список заполняется. Тем не менее, список тогда недействителен, и я не могу перейти к следующему шагу (также в случае, если я добавлю data = data тогда. Я думаю, что я должен добавить некоторую дополнительную информацию к return PagesFormSet(data = data), но я просто не есть подсказка.

Мне бы очень хотелось помочь, поскольку я целый день смотрел на эту проблему. Большое спасибо!

1 Ответ

0 голосов
/ 12 мая 2019

Я нашел ответ!Что я сделал, так это вернул набор форм вместо PagesFormSet.Тем не менее, я уже дал PagesFormset при запуске formset необходимые данные.Это, очевидно, означает, что набор форм содержит как данные, так и дополнительную информацию из вариантов.Для дальнейшего использования:

def get_form(self, step=None, data=None, files=None):

        form = super(FormWizardView, self).get_form(step, data, files)

        step = step or self.steps.current

        if step == 'pages':
            form_class = self.form_list[step]
            form1_cleaned_data = self.get_cleaned_data_for_step('agenda')
            formset = PagesFormSet(data = data)

            loan_choices = []


            for form in formset.forms:
                if form1_cleaned_data:
                    form.fields['agenda_select'].choices = [item for item in form1_cleaned_data.items()]

            # print(form.fields['agenda_select'])

            return formset

        return super(FormWizardView, self).get_form(step, data, files)
...