django - 将 ModelForm 进度值保存到 Django 中的会话
问题描述
我有用户可以创建(模型)表单的流程。如果表单有效,则保存对象并继续流程,但选择在多个页面中。我需要保持创建对象的当前状态,在它完全有效之前无法保存。我可以做的一件事是始终在 ModelForm 中的这些视图周围传递信息,以确保该用户永远不会丢失数据,但我还想确保,如果他离开流程并返回,他不会丢失数据,他之前已经进入了。
这就是为什么我决定要将所有字段保存到会话中。
- 这是正确的方法吗?
- 你会怎么做?
- 你会把这个会话逻辑放在哪里?
- 从不完整的表单中获取字段以保存的最佳方法是什么?
编辑:
请不要给我关于如何使用会话的建议,我说的更多的是高级逻辑和架构,而不是具体的实现。
我应该多描述一下我的流程。模型有 3 个字段。
- 正常下拉列表(外键引用另一个模型)
- 文本域
- 另一个外键,但这次不是由选择完成,而是它自己的单独页面,有很多过滤器来帮助用户选择正确的(外来)模型
流程不是线性的,因为用户可以从页面的不同部分开始。
有时用户可以转到具有前 2 个字段 + 按钮“浏览”的页面,这会将您带到第三个字段的选择页面。然后在他在那里选择领域后,他回来了。但有时他会先选择该字段,然后进入屏幕,显示剩余的 2 个字段,他需要填写这些字段。
解决方案
保存在会话中:
request.session["variable_name"] = "value"
从会话中获取request.session["variable_name"]
。确保你也可以request.session.get("..")
同时使用