为匿名用户提供个人资料

时间:2013-07-11 09:09:46

标签: django django-users

我正在创建一个django应用,用户可以在调查中回答不同的问题,但如果他们没有登录,则他们的投票将在三天后删除。

我现在这样做的方式如下:

一旦匿名用户尝试回答问题,我会创建一个新用户,登录并分配答案。一旦用户想要创建一个帐户,我会让他们更改他们的详细信息。

这种方法令人讨厌的副作用是: 当我秘密地为匿名用户创建帐户以允许投票时,我必须向用户假装他们没有登录。这通常使用标准管理员视图和模板很烦人,因为我必须检查其他属性,它告诉我是否自动创建了用户,或者用户是否自己创建了用户。

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

更简单的解决方案是不将调查答案与用户ID联系起来。为调查回复提供一个单独的,完全独立的ID。当真实用户登录时,创建从用户到调查响应的单侧关联。当匿名用户注册时,也添加此关联。 (也就是说,调查的“所有者”将是可选的。)之后,定期删除没有所有者的旧调查答复,和/或忽略查询中过时的调查。

这将大部分复杂性从管理员应用程序转移到用户注册。 (即,当匿名用户回答调查时,将响应ID存储在会话中。当新用户注册时,检查会话以获取响应ID,然后然后将其分配给用户ID。)