如何按顺序呈现一系列Django表单?

时间:2012-03-08 20:02:19

标签: python django forms

对于调查问卷,我想向用户呈现一系列表格。我想保持视图的通用性,以便它可以在序列中显示任何表单实例。

目前,我正在存储表单对象(不是实例)的列表,并且我在需要呈现时实例化每个表单。 (例如formobject = formslist[3]; form = formobject();)。

有更多的pythonic方式吗?我已经考虑在每个表单的定义中使用getnext函数,但我仍然需要一个位置来列出我想要生成的表单序列。

下一步将介绍一些跳过逻辑,因此表格序列的硬连线并不理想。

也许这会有所帮助。这就是我在视图中使用getnext函数的内容。它从第一种形式到第二种形式起作用,但后来不起第三种形式:

def showform(request):
    if 'formobj' not in locals():
        formobj = StartForm

    if request.method == 'POST': # If the form has been submitted...
        form = formobj(request.POST)

        if form.is_valid():
            try:
                form.save()
            except:
                pass
            cd = form.cleaned_data
            formobj = form.get_next()
            form = formobj()
            if formobj == 'done':
                render_to_response('doneform.html', context_instance=RequestContext(request))
            else:
                form = formobj()
    else:
        form = formobj()

    return render_to_response('template.html', {'form': form, 'requestpath': request.get_full_path()}, context_instance=RequestContext(request))

1 个答案:

答案 0 :(得分:3)

您是否在表单向导步骤中查看了这个以保存数据

Using FormWizard and saving the forms data in between before the completion of the whole process?

该帖子中还提到了一款名为django-merlin的应用程序,可以满足您的需求。我个人并没有亲自使用它。

修改

这是另一篇可能对您有所帮助的帖子 Django - form wizard step by step