Python 在整个过程完成之前,是否使用FormWizard并在其间保存表单数据?
我正在使用FormWizard在我的应用程序中完成一组操作,我有两个模型Employee和Person,Employee类继承Person,Person的所有字段都可用于Employee对象 现在我正在使用FormWizard创建一组表单,我只是想知道这一点。如果用户开始在表单中输入数据,并在4张表单中填写多达2张表单,并且愿意随后填写其余表单。那么,他填写的两份表格的数据是否可以保存在数据库中呢。 下次他来的时候可以从第三张表格上完成手术Python 在整个过程完成之前,是否使用FormWizard并在其间保存表单数据?,python,django,Python,Django,我正在使用FormWizard在我的应用程序中完成一组操作,我有两个模型Employee和Person,Employee类继承Person,Person的所有字段都可用于Employee对象 现在我正在使用FormWizard创建一组表单,我只是想知道这一点。如果用户开始在表单中输入数据,并在4张表单中填写多达2张表单,并且愿意随后填写其余表单。那么,他填写的两份表格的数据是否可以保存在数据库中呢。 下次他来的时候可以从第三张表格上完成手术 如果有人知道这一点,请帮助我,这将是一个巨大的帮助。谢
如果有人知道这一点,请帮助我,这将是一个巨大的帮助。谢谢大家! 您可以做的是,在每个步骤中,将表单状态保存到数据库中的某个序列化对象,并将其交给用户 然后在连接formwizard时,将formwizard视图包装在自定义视图中,该视图检查用户是否保存了表单,如果保存了表单,则反序列化并重定向到相应的步骤 编辑:向导在POST中保存状态。只需要保存postdata models.py:
class SavedForm(Model):
user = ForeignKey(User)
postdata = TextField()
views.py:
import pickle
class MyWizard(FormWizard):
def done(self, request, form_list):
SavedForm.objects.get(user=request.user).delete() # clear state!!
return render_to_response('done.html',)
formwizard = MyWizard([Form1, Form2]) <- class name, not instance name
def formwizard_proxy(request, step):
if not request.POST: #if first visit, get stored data
try:
prev_data = SavedForm.objects.get(user=request.user)
request.POST = pickle.loads(prev_data.postdata)
except:
pass
else: # otherwise save statet:
try:
data = SavedForm.objects.get(user=request.user)
except:
data = SavedForm(user=request.user)
data.postdata=pickle.dumps(request.POST)
data.save()
return formwizard(request)
导入pickle
类MyWizard(FormWizard):
def完成(自我、请求、表单列表):
SavedForm.objects.get(user=request.user).delete()#清除状态!!
返回render\u to\u响应('done.html',)
formwizard=MyWizard([Form1,Form2])你能帮我写下过程步骤函数和d视图吗,只要一点代码…………我会感谢你的回答,这很有帮助,但在搜索之后,我在github中找到了一个名为django merlin的应用程序,这是一个比使用form-wizard更好的选择。你应该使用models.BinaryField()对于postdata属性,pickle生成的二进制数据不能直接编码到TextField中