2013-02-09 4 views
4

나는 장고를 만들려고 애를 썼다 FormWizard. 나는 꽤 가까이에 있다고 생각하지만 데이터베이스에 저장하는 방법을 알 수는 없다. Django FormWizard 저장

나는 솔루션 here을 suggeted 시도 :

def done(self, form_list, **kwargs): 
    instance = MyModel() 
    for form in form_list: 
     for field, value in form.cleaned_data.iteritems(): 
      setattr(instance, field, value) 
    instance.save() 

    return render_to_response('wizard-done.html', { 
     'form_data': [form.cleaned_data for form in form_list], 
    }) 

하지만 No Exception Supplied 오류의 수행 방법의 결과에 배치. 반면에이 코드를 save 메서드에 배치하면 정보가 저장되지 않습니다.

def done(self, form_list, **kwargs): 
    for form in form_list: 
     form.save() 
    return render_to_response('wizard-done.html', { 
     'form_data': [form.cleaned_data for form in form_list], 
    }) 

을하지만 이것은 또 다른 오류를 반환합니다 :

또한이 솔루션은 here을 제안했습니다 AttributeError at /wizard/ 'StepOneForm' object has no attribute 'save'. 이 문제에 직면 했습니까? 마법사를 제출 한 후 데이터베이스에 정보를 저장하려면 어떻게합니까? 감사합니다

답변

0

시도

def done(self,request,form_list): 
    if request.method=='POST': 
     form1 = F1articles(request.POST)  
     form2 = F2articles(request.POST) 
     form_dict={} 
     for x in form_list: 
      form_dict=dict(form_dict.items()+x.cleaned_data.items()) 
     insert_db = Marticles(heading = form_dict['heading'], 
     content = form_dict['content'], 
     created_by = request.session['user_name'], 
     country = form_dict['country'], 
     work = form_dict['work']) 
     insert_db.save() 
     return HttpResponse('data saved successfully') 
0
def done(self, form_list, **kwargs): 
    new = MyModel() 
    for form in form_list: 
     new = construct_instance(form, new, form._meta.fields, form._meta.exclude) 
    new.save() 
    return redirect('/') 
0

당신이 인스턴스를 얻을 필요가이 방법 전에 :

def get_form_instance(self, step): 
    if self.instance is None: 
     self.instance = MyModel() 
    return self.instance 

def done(self, form_list, **kwargs): 
    self.instance.save() 
    return HttpResponseRedirect(reverse('mymodel_finish'))