5

私は django を作成するのに苦労していますFormWizard。私はかなり近いと思いますが、データベースに保存する方法がわかりません。

ここで提案されている解決策を試しました:

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],
    })

ただし、done メソッドに配置すると、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],
    })

しかし、これは別のエラーを返します: AttributeError at /wizard/ 'StepOneForm' object has no attribute 'save'. この問題に直面したことがありますか?ウィザードの送信後に情報をデータベースに保存するにはどうすればよいですか? ありがとう

4

4 に答える 4

1
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('/')
于 2013-03-06T08:58:53.177 に答える
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')
于 2013-03-06T08:46:36.783 に答える
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'))
于 2013-12-15T09:12:26.667 に答える