Django如何在数据库中保存和检索调查状态

时间:2015-10-04 22:13:33

标签: django django-forms

如何将django表单状态保存并检索到数据库?

用户正在进行冗长的调查,并希望在两者之间保存调查状态。

我的想法是:

选项1.将request.POST保存到数据库(不工作),然后:

SurveyForm(my_saved_form_state or request.POST)

选项2.将cleaning_data保存到数据库(确实有效),然后:

SurveyForm(my_saved_form_state or request.POST or None) 

但cleaning_data没有实例化表单!只有完整的request.POST(一个QueryDict)似乎这样做。怎么办?

1 个答案:

答案 0 :(得分:0)

所以我终于解决了。

  1. 将POST数据保存到数据库:

    postdata = {}
    for key in request.POST.iterkeys():
        if len(request.POST.getlist(key)) > 1:
            postdata[key] = request.POST.getlist(key)  # for checkboxes
        else:
            postdata[key] = request.POST.get(key, u'')  # for all others
    person.saved_answers = postdata
    person.save()
    
  2. 从数据库加载:

        saved_answers = ast.literal_eval(person.saved_answers)  # convert unicode string into python object
        SurveyForm(saved_answers)