我正在创建一个django应用,用户可以在调查中回答不同的问题,但如果他们没有登录,则他们的投票将在三天后删除。
我现在这样做的方式如下:
一旦匿名用户尝试回答问题,我会创建一个新用户,登录并分配答案。一旦用户想要创建一个帐户,我会让他们更改他们的详细信息。
这种方法令人讨厌的副作用是: 当我秘密地为匿名用户创建帐户以允许投票时,我必须向用户假装他们没有登录。这通常使用标准管理员视图和模板很烦人,因为我必须检查其他属性,它告诉我是否自动创建了用户,或者用户是否自己创建了用户。
有更好的方法吗?
答案 0 :(得分:1)
更简单的解决方案是不将调查答案与用户ID联系起来。为调查回复提供一个单独的,完全独立的ID。当真实用户登录时,创建从用户到调查响应的单侧关联。当匿名用户注册时,也添加此关联。 (也就是说,调查的“所有者”将是可选的。)之后,定期删除没有所有者的旧调查答复,和/或忽略查询中过时的调查。
这将大部分复杂性从管理员应用程序转移到用户注册。 (即,当匿名用户回答调查时,将响应ID存储在会话中。当新用户注册时,检查会话以获取响应ID,然后然后将其分配给用户ID。)