在表单向导中重复大表单

时间:2016-01-04 10:40:45

标签: django django-forms django-formwizard

我正在尝试创建一个表单向导,该向导以可重复的形式开始,用于添加多个学员。

用户可以根据需要添加尽可能多的学员,每个“添加实习生”表格都是一个很长的形式,需要大量的细节。

一旦用户添加了所有受训者,在向导完成之前还有3或4个表单。

这样做的最佳方式是什么?

我想知道是否将受训者添加到会话中是最简单的想法,但这可能会破坏一些向导功能,例如能够返回等等。

由于“添加实习生”表单太长,在第一个表单向导页面上使用表单集是没有意义的,我不这么认为。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以通过这样的方式修改post方法。

if form.is_valid():
    # if the form is valid, store the cleaned data and files.
    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))

    # check if the current step is the last step
    if self.steps.current == self.steps.last:
        # no more steps, render done view
        return self.render_done(form, **kwargs)

    # check if trainee form is current form
    elif self.steps.current == "trainee_form":
        mentor = User.objects.get(id=self.request.user.id)
        Trainee.objects.create(
            mentor=mentor,
            data1=self.request.POST["trainee_form-data1"]
            data2=self.request.POST["trainee_form-data2"]
            data3=self.request.POST["trainee_form-data3"]
        )
        if self.request.POST["trainee_form-add_new"] == True:
            self.render.go_to_step["trainee_form"]
        else:
            return self.render_next_step(form)
    else:
        # proceed to the next step
        return self.render_next_step(form)
return self.render(form)

你必须摆弄它,但希望它能引发一个想法。