2014-03-31 52 views

回答

2

表單嚮導的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 
    ... 
相關問題