2013-04-29 43 views
2

我試圖實現一個簡單的「檢查點」系統來保存部分完成的表單。對於數據錄入項目,我有一套大型表單(比如說100個條目)。現在,如果這個人退出或者中途退出,那麼我希望保存這個進程 - 但是我不希望半數輸入的數據保存在數據庫中,直到完成。如何將request.POST序列化到數據庫並再次返回

據我所見,處理這個問題的最佳方法是將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和泡菜,並得到了同樣的錯誤。有沒有辦法解決?

回答

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) 
+0

不工作 - 我得到以下錯誤:AttributeError的: '快譯通' 對象有沒有屬性 '的GetList' – Puzzled79 2013-04-29 10:02:40

+0

@ Simon7,Django的request.POST'是不是一個簡單的字典,而是一個'QueryDict'。所以在使用保存的數據時可能會產生錯誤。從字典創建querydict參考http://stackoverflow.com/questions/13363628/django-can-i-create-a-querydict-from-a-dictionary – Rohan 2013-04-29 11:40:56

+0

好吧,似乎工作 - 感謝羅漢 – Puzzled79 2013-04-30 06:16:52

相關問題