在理解 Django 的 contrib 库中的表单向导模块并将备份和恢复功能应用到该模块时,我遇到了一个小问题。
我试图创建一个存储类,它使用数据库来存储当前状态,而不是 cookie 或 session ,但这并没有解决我的问题,因为当表单初始化时,所有旧数据都会被清除,这在两个 cookie 存储中是相同的和 session 存储(我的是模仿 cookie 一个但保存到 db)
我需要填写的问题是,如果用户在第 x.th 步离开表格(假设电力中断)然后再次登录并启动向导,用户必须继续直到完成或单击“取消” (尚未实现)。
最佳答案
您可以像这样在 View 中覆盖 post 方法:
class YourWizardView(SessionWizardView):
def post(self, *args, **kwargs):
form = self.get_form(
data=self.request.POST, files=self.request.FILES)
data = self.get_all_cleaned_data()
form.is_valid() # to generate cleaned data
data.update(form.cleaned_data)
#Save your data HERE
return super(YourWizardView, self).post(*args, **kwargs)
def get_form_instance(self, step):
# Getting obj instance values
obj = None
if 'pk' in self.kwargs:
obj = get_object_or_404(
YourModel, pk=self.kwargs['pk'])
return self.instance_dict.get(step, obj)
如果您希望用户返回并查看数据而不单击下一步,您可以执行一些 javascript 通过 ajax 发布数据(例如每 5 秒一次)
关于python - Django 表单向导备份和恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24654718/