在Django 1.6窗体向导中可以重复一个步骤吗?

问题描述:

在Django表单向导中可以重复一个步骤吗?我想根据用户的需求重复一个无限次的步骤。在Django 1.6窗体向导中可以重复一个步骤吗?

+0

对于Django 1.4类似的问题:http://*.com/questions/13052224/how-to-dynamically-repeat-steps-in-django-formwizard-1-4 – Andy

表单向导的documentation指示如何进行条件步骤。我和功能工厂一起使用了几百个条件步骤,所以用户可以根据需要多次重复最后一步。

from django.contrib.formtools.wizard.views import SessionWizardView 
from myapp.forms import BasicInformation, MoreInformation 


def function_factory(cond_step): 

    def info(wizard): 
     cleaned_data = wizard.get_cleaned_data_for_step(str(cond_step)) or {} 
     return cleaned_data.get("add_another_step", False) 

    return info 


def make_condition_stuff(extra, cond_step): 
    cond_funcs = {} 
    cond_dict = {} 
    form_lst = [ 
     BasicInformation, 
     MoreInformation, 
    ] 

    for x in range(extra): 
     key1 = "info{0}".format(x) 
     cond_funcs[key1] = function_factory(cond_step) 
     cond_dict[str(cond_step+1)] = cond_funcs[key1] 
     form_lst.append(MoreInformation) 

    return cond_funcs, cond_dict, form_lst 


last_step_before_extras = 1 
extra_steps = 300 

cond_funcs, cond_dict, form_list = make_condition_stuff(
    extra_steps, 
    last_step_before_extras 
) 


class InfoWizard(SessionWizardView): 
    form_list = form_list 
    condition_dict = cond_dict 
    ...