Django表单向导保存并转到上一步 [英] Django form wizard save and go to previous step

查看:153
本文介绍了Django表单向导保存并转到上一步的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个工作的django formwizard,当我点击上一个按钮不会验证当前输入。



我尝试过

 < input name =wizard_goto_stepclass =btn btn-primary btn-largetype =submitvalue =prev/> ; 

 < button class =btn btn-info btn-large
name =wizard_goto_steptype =submitvalue ={{wizard.steps.prev}}>
{%transprev step%}
< / button>

但这两个都不会做我想做的。

解决方案

如果您希望在返回上一个表单之前验证并保存当前表单中的数据,则需要覆盖你的子类 SessionWizardView 中的post()方法。您要查找的方法是 self.storage.set_step_data() self.storage.set_step_files()保存当前表单数据。



一个粗略的例子:

  def post(self,* args ,** kwargs):
go_to_step = self.request.POST.get('wizard_goto_step',无)#获取步骤名称
form = self.get_form(data = self.request.POST,files = self.request.FILES)

current_index = self.get_step_index(self.steps.current)
goto_index = self.get_step_index(go_to_step)

如果current_index> ; goto_index:
如果form.is_valid():
self.storage.set_step_data(self.steps.current,
self.process_step(form))
self.storage.set_step_files(
self.process_step_files(form))
else:
return self.render(form)
return super(NominateFormWizard,self).post(* args ,* * kwargs)


I have a working django formwizard which when I hit the previous button doesn't validate the current input.

I've tried variations on

<input name="wizard_goto_step" class="btn btn-primary btn-large" type="submit" value="prev"/>

and

<button class="btn btn-info btn-large"
        name="wizard_goto_step" type="submit" value="{{ wizard.steps.prev }}">
    {% trans "prev step" %}
</button>

but neither of these seems to do what I want to do.

解决方案

If you want it to validate and save the data on the current form before stepping back to a previous form, you need to override the post() method in your subclass of SessionWizardView. The methods you're looking for are self.storage.set_step_data() and self.storage.set_step_files() to save the current form data.

A rough example:

def post(self, *args, **kwargs):                                                                                                                                                                                                                    
    go_to_step = self.request.POST.get('wizard_goto_step', None)  # get the step name                                                                                                                                               
    form = self.get_form(data=self.request.POST, files=self.request.FILES)                                                      

    current_index = self.get_step_index(self.steps.current)                                                                     
    goto_index = self.get_step_index(go_to_step)                                                                                

    if current_index > goto_index:    
        if form.is_valid():                                                                      
            self.storage.set_step_data(self.steps.current,                                                                          
                self.process_step(form))                                                                                            
            self.storage.set_step_files(self.steps.current,                                                                         
                self.process_step_files(form))                                                                                      
    else:                                                                                                                       
        return self.render(form)                                                                                                
    return super(NominateFormWizard, self).post(*args, **kwargs) 

这篇关于Django表单向导保存并转到上一步的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆