您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Django FormWizard如何动态更改form_list

Django FormWizard如何动态更改form_list

get_context_data()我认为,更合适的get_form()方法是在向导视图中实现方法,并根据步骤和先前的数据返回不同的表单实例,而不是更改中的表单列表等。

像这样:

class UserServiceWizard(SessionWizardView):
    instance = None

    def get_form(self, step=None, data=None, files=None):
        if step is None:
            step = self.steps.current

        prev_data = self.get_cleaned_data_for_step(self.get_prev_step(
                                                    self.steps.current))
        if step == '1':
            service_name = str(prev_data['provider']).split('Service')[1]
            form_class = class_for_name('th_' + service_name.lower() + '.forms',
                                  service_name + 'ProviderForm')
            form = form_class(data)
        elif step == '3':
            service_name = str(prev_data['consummer']).split('Service')[1]
            form_class = class_for_name('th_' + service_name.lower() + '.forms',
                                  service_name + 'ConsummerForm')
            form = form_class(data)
        else:
            form = super(UserServiceWizard, self).get_form(step, data, files)

        return form

这里的技巧是不更改表单列表的长度(您已正确完成),而只是更改表单实例。Djangoget_form()为此提供了重写方法方法。Django将采用此方法,并始终使用它来获取方法的表单实例。

Go 2022/1/1 18:36:43 有342人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶