我对会话管理有一个奇怪的问题。
我实现了一个表单链,在表单完成后,模型会保存到数据库中,但该模型包含create_user
,update_user
等字段。
为了填充这些user
字段,当然应该有一个经过身份验证的用户。但是,我的表单链也可以由匿名用户填写。
如果该匿名用户在其会话刷新之前注册或登录系统,则应将user_id
分配给create_user
和update_user
字段。
实施此类系统的最佳方法是什么?
我希望我能解释一下情况。
由于
答案 0 :(得分:1)
保存模型后,将模型实例保存到会话中的列表中,例如:
views.py:
...
form = DataForm(request.POST)
if form.is_valid():
instance = form.save()
instances = request.session.get('filed_instances', [])
instances.append(instance)
request.session['filed_instances'] = instances
登录后登录方法中的(取决于您的实施情况)您可以按如下方式更新这些内容:
instances = request.session.get('filed_instances')
if instances:
for instance in instances:
instance.create_user = request.user
instance.update_user = request.user
instance.save()
答案 1 :(得分:0)
将您登录的用户名放在会话变量中。在会话开始时,如果未设置该变量,请将其设置为空字符串,null或表示匿名用户的任何其他值。在数据库中保存数据时,请使用该名称作为创建/更新用户名。 我希望它有用:)