gpt4 book ai didi

python - 在整个过程完成之前使用 FormWizard 并保存表单数据?

转载 作者:行者123 更新时间:2023-12-01 06:13:54 26 4
gpt4 key购买 nike

我在我的应用程序中使用FormWizard完成一组操作,我有两个模型Employee和Person,Employee类继承Person,并且Person的所有字段都可用于Employee对象。

现在我正在使用 FormWizard 创建一组表单,我只是想知道这一点。如果用户开始在表单中输入数据并填写 4 个表单中的最多 2 个表单,并且随后愿意填写其余表单。那么有没有可能他填写的两份表格的数据可以保存在数据库中呢?并且下次他来的时候可以完成第三种形式的操作。

如果有人知道的话请帮助我,这将是一个很大的帮助。谢谢!

最佳答案

您可以做的就是每一步,将表单状态保存到数据库中的某个序列化对象中,ForeignKeyed 给用户。

然后在连接表单向导时,将表单向导 View 包装在自定义 View 中,该 View 检查用户是否有保存的表单,如果有,则反序列化并重定向到适当的步骤。

编辑:似乎 formwizard 在 POST 中保存状态。只需要保存postdata即可。

模型.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)

编辑:更改表单向导构造函数

关于python - 在整个过程完成之前使用 FormWizard 并保存表单数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4365859/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com