如何将request.POST序列化到数据库并再次返回

时间:2013-04-29 04:59:03

标签: django serialization

我正在尝试实现一个简单的“检查点”系统来保存部分完成的表单集。我有一组数据输入项目的大型表格(比如100个条目)。现在,如果该人退出或中途退出,那么我希望保存这一进度 - 但我不希望将半输入的数据保存在数据库中直到完成。

据我所知,处理此问题的最佳方法是将request.POST保存到数据库字段并再次将其拉出来。例如

 def myview(request, obj_id):
     obj = get_object_or_404(Task, obj_id)
     if request.POST:
         # save checkpoint
         obj.checkpoint = serializers.serialize("json", request.POST)
     else:
         # load last version from database.
         request.POST = serializers.deserialize("json", obj.checkpoint)
     formset = MyFormSet(request.POST) 
     # etc.

但是,这给了我以下错误:

'unicode' object has no attribute '_meta'

我尝试过简单的json和pickle并得到同样的错误。有没有办法解决?

1 个答案:

答案 0 :(得分:2)

Django的序列化程序界面与django模型对象一起使用。它不适用于其他对象。

您可以尝试使用json

if request.POST:
     # save checkpoint
     obj.checkpoint = json.dumps(request.POST)
     post_data = request.POST
else:
     # load last version from database.
     post_data = json.loads(obj.checkpoint)

formset = MyFormSet(post_data)