Django FormWizard如何动态更改form_list

Django FormWizard如何动态更改form_list,第1张

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

这里的技巧是不更改表单列表的长度(您已正确完成),而只是更改表单实例。Django

get_form()
为此提供了重写方法的方法。Django将采用此方法,并始终使用它来获取该方法的表单实例。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5673519.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存