2017-03-09 114 views
1

可能是一個簡單的問題,但使用django-formtools實現表單預覽頁面時遇到了問題。我已經配置了每個文檔的所有內容。我堅持要將什麼添加到done()方法將數據保存到數據庫。Django FormPreview:將表單數據保存到數據庫

forms.py

class JobForm(ModelForm): 
    class Meta: 
     model = Job 
     fields = ('title', 'category', 'company', 'website', 'description',) 

class JobFormPreview(FormPreview): 
    def done(self, request, cleaned_data): 
     # add what here to save form data as object? 
     return HttpResponseRedirect('/success') 

urls.py

... 
url(r'^jobs/new/$', 
    JobFormPreview(JobForm), 
    name='job_form'), 
... 

使用默認的模板。表單和預覽都呈現正常,但顯然數據不會保存在提交。試過self.form.save()this answer,但得到一個錯誤save() missing 1 required positional argument: 'self'

我很欣賞任何指導。

回答

1

看着formtools code,看起來好像self.form是表單類,而不是驗證的表單實例。因此self.form.save()將不起作用。我刪除了從linked answer撥打self.form.save()的建議。

我看不到直接的方法來訪問done方法中的驗證表單。我建議你使用cleaned_data來創建實例:

class JobFormPreview(FormPreview): 
    def done(self, request, cleaned_data): 
     job = Job.objects.create(**cleaned_data) 
     return HttpResponseRedirect('/success')