我在会话中添加表单时收到异常:
PicklingError: Can't pickle <class 'django.utils.functional.__proxy__'>: attribute lookup django.utils.functional.__proxy__ failed
表单包含一些简单的字段,并且有一些javascript附加到窗口小部件。可能是Django形式根本不能被腌制,但异常似乎指向unicode懒惰翻译。
为了进一步测试,我还试图只将表单错误(错误判断)插入到会话中并收到相同的错误。
我在此感谢您的帮助,提前谢谢。
编辑:这就是我在会话中插入表单的原因:
我有一个有表单的应用。此表单由另一个应用中的模板标记呈现。发布时,如果表单有效,没问题,我会做东西并重定向到“下一步”。但是,如果它无效,我想返回发布页面以显示错误。回想一下,在这种情况下评论应用程序重定向到中间“嘿,请修复错误”页面。我试图避免这种情况,因此重定向回发布页面,其中包含模板标记将呈现的会话中的表单及其错误。
答案 0 :(得分:2)
您不需要腌制表格。如果要在会话中存储表单值,请存储form.cleaned_data
根据您所说的内容,您可能需要结帐django form wizard。它腌制数据并将其作为隐藏值存储在下一个表单中,您可以在完成后获得所有表单字段。
答案 1 :(得分:0)
我不知道这会有多大帮助,但JSON序列化程序中存在此类错误的explanation
答案 2 :(得分:0)
如果验证失败,请在会话中放置request.POST,并像往常一样重新定向用户。您的其他视图只需收集此信息并使用无效数据初始化表单,您在POST视图中找到的错误将重新显示在重定向的视图中。