带有动态生成的表单集的 Django-formwizard 未提交

问题描述 投票:0回答:1

我正在尝试让 django-formwizard 使用第一个表单中用户输入动态生成的表单集。 表单渲染和初始数据显示正常,但是当我尝试提交第二个表单时,我没有错误地返回它,并且我没有继续使用

done()
方法。

我的表格:

class MenuInputForm(forms.Form):
    content = forms.CharField()


class DayMenuForm(forms.Form):
    menu = forms.CharField()


DayMenuFormSet = formset_factory(form=DayMenuForm, min_num=1, extra=0)

我的看法:

class MenuAddWizard(LoginRequiredMixin, SessionWizardView):

    # Either provide form_list as part of .as_view() in urls, or here.
    # Note: DayMenuFormSet is overwritten in get_form()
    form_list = [MenuInputForm, DayMenuFormSet]
    template_name = "menu_add.html"

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

        # Determine the step if not given
        if step is None:
            step = self.steps.current

        if step == '1':
            step_0_cleaned_data = self.get_cleaned_data_for_step('0')
            # Using step 0 data, I generate the list to be used for initial; removing logic for brevity and using two example items as test
    
            DayMenuFormSet = formset_factory(form=DayMenuForm, extra=0)
            formset = DayMenuFormSet(initial=[{'menu': 'Some example menu'}, {'menu': 'This is some other example text'}])
            form = formset

        return form

    def done(self, form_list, **kwargs):
        # This code is never reached
        pass

模板:

<form action="" method="post">{% csrf_token %}

<table>
    {{ wizard.management_form }}

    {% if wizard.form.forms %}
        {{ wizard.form.management_form }}
        {% for form in wizard.form.forms %}
            {{ form.as_table }}
        {% endfor %}
    {% else %}
        {{ wizard.form }}
    {% endif %}
</table>

<input type="submit" value="Submit"/>
</form>

我做错了什么或忘记了什么?

django django-formwizard
1个回答
0
投票

是否可能只是

.done()
什么都不返回?通常,您应该渲染一个模板,或者更好的是,重定向到视图。

© www.soinside.com 2019 - 2024. All rights reserved.