可能是一个简单的问题,但在使用django-formtools实现表单预览页面时遇到了问题。我按照文档配置了所有内容。我坚持要添加到done()
方法以将数据保存到db。
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'),
...
使用默认模板。表单和预览都渲染得很好,但显然数据不会保存在提交上。每this answer次尝试self.form.save()
,但收到错误save() missing 1 required positional argument: 'self'
。
我感谢任何指导。
答案 0 :(得分: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')