我有一个从表单输入存储用户和产品数据的Django模型:Django的存储匿名用户数据
def ProductSelection(request, template_name='product_selection.html'):
...
if user.is_authenticated():
user = request.user
else:
# deal with anonymous user info
project = Project.objects.create(
user=user,
product=form.cleaned_data["product"],
quantity=form.cleaned_data["product_quantity"],
)
当然,这是罚款身份验证的用户,但我也希望能够存储匿名用户项目,并且如果可能的话,在它们最终注册和认证时将它们与用户相关联。
我的想法是创建名称= some_variable(时间戳与随机散列?)连接的匿名用户,然后将该用户名保存在会话数据中。如果我确保会话变量(如果存在)用于记录该用户的所有项目活动,那么我应该能够在注册时使用用户的真实凭证更新项目。
这是过于复杂和脆弱?我有没有必要不必要地保存数千行数据?这个常见问题的最佳方法是什么?
任何有关这方面的指导将不胜感激。
当我在过去遇到过类似的问题时,当你需要回到另一个方向时,问题就出现了。就像用户可以拥有多个项目一样,并且您需要做一些事情,比如看看哪些会话喜欢两个特定的项目。 – JeffS
就我而言,我希望将匿名用户数据存储在数据库中,并通过会话将其与特定用户相关联。如果'user = request.user'返回一个匿名用户对象,我不能在注册后将这些信息绑定到用户。 –
在这种情况下,我的第一个示例应该这样做:添加一个字段以保存'session_key'值,然后您可以稍后检索所需的Project实例,并在匿名用户停止匿名时将其与新用户关联:-) –