2012-09-19 57 views
0

是这里没有办法表单集存储到会话?保存表单集在会话 - Django的


我的情景是这样的。我有一个填写用户数据和上传用户证书的表单,并在下一页(单击下一步)中有一个表单来输入专业详细信息。

是否有可能限制使用表单集生成的表单的最大数量?

+0

看来你在这里有两个单独的问题。请尝试澄清问题。 – miki725

回答

1

如果我正确理解你的问题 - 如何在会话中保存from的状态,然后从Django 1.4开始,它实际上提供了一种开箱即用的方法。

https://docs.djangoproject.com/en/dev/ref/contrib/formtools/form-wizard/

它允许一个表格分成多个部分,然后用户能够单独地继续进行。一旦用户填写了任何一个部分,他/她就会进入下一页,此时表单的状态将被保存在一个会话中。一旦所有页面都被填充,那么所有内容都可以保存到数据库中。

另外,当从一个页面到另一个页面时,您应该在下一页上添加逻辑。

图像,您有一个向导,其中第一页上它询问用户想要上传什么类型的内容。然后进入第二页,然后根据第一页的答案,可以存在适当的上传字段 - 视频,音乐或图形的字段。

+0

谢谢。但formwizard是不是正确的选择对我来说,因为我有一个链接可以查看以前的形式...其实formwizard毁了我的:( –

+0

很遗憾听到这个了一整天,然后请澄清的问题。你的问题是抽象的,它不清楚的。如果你有具体问题,问,如果你得到的异常,问。更多关于如何提出好的问题可以在StackOverflow的常见问题解答中找到在http://stackoverflow.com/faq – miki725

+0

的问题是这样的我有一个注册模块有三种形式,用户可以转到下一个和前一个表单,所以我认为最好是将表单数据保存到会话中。每个表单中都有两个表单(添加证书,网址,图像,电子邮件)等 –

0

我会回答FormWizard,但如果你不想使用它,你可以简单地创建两种形式。当用户提交第一个表单时,你将它浸入一个会话中,然后生成第二个表单。当他点击后面的链接时,你unPickle保存的数据,并预先填写表格。

def submitFirstForm(request): 
    data = request.POST['data'] 
    import cPickle   
    request.session['data'] = cPickle.dumps(data) 
    ... 

def backBtn(request): 
    import cPickle 
    data = cPickle.loads(request.session['page']) 
    form = DataForm(data) 
    ... 
+0

是有可能的formset –

+0

保存到会话吗?是为Python对象。 – Kamagatos

+0

谢谢你,所以我可以简单地保存POST数据到会话保存表单集吧? –