我正在尝试实现一个简单的“检查点”系统来保存部分完成的表单集。我有一组数据输入项目的大型表格(比如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并得到同样的错误。有没有办法解决?
答案 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)