在Django中,当用户登录时,如何将对象从会话外键移动到用户外键

2024-10-01 02:27:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个模型可以保存最终用户的任务进度。你知道吗

class TaskCompleted(models.Model):
   session = models.ForeignKey('sessions.Session', on_delete=models.SET_NULL,blank=True, null=True)
   user = models.ForeignKey(User, blank=True, null=True)
   task = models.ForeignKey(Task, blank=True, null=True)

最终用户可能已登录,也可能未登录。如果他们被记录了,我就把它保存到用户那里,如果他们没有,我就把它保存到会话中。你知道吗

当用户登录时,我想查找他们在未经验证的情况下完成的任何任务,然后更新用户外键以将其与帐户关联。你知道吗

我发现会话已被破坏,因此将会话设置为Null。你知道吗

我对别人关于如何处理这个问题的建议很感兴趣?你知道吗


Tags: 用户模型truemodelonmodelssessiondelete
1条回答
网友
1楼 · 发布于 2024-10-01 02:27:50

当用户登录时,会话数据不会被销毁-数据将保存到新会话(密钥为“cycled”)。您仍然可以使用request.session['mykey']。您可以做一些事情来持久化/更改TaskCompleted实例的所有权。一个选项是在会话中为匿名用户保存TaskCompleted实例id,并重写login视图,以便在成功登录时将该实例分配给用户。(如果您遵循这一点,您将不需要模型中的session = models.ForeignKey()字段)

相关问题 更多 >