如何通过外键将模型与会话相关联
How do I associate a model with a session via a foreign key
假设我的站点存储文章,其中每篇文章都与创建它的用户相关联。我想允许未经身份验证的用户创建文章,然后 login/signup 他们创建的文章(在登录 in/signing 之前)与他们的用户实例相关联。
我解决这个问题的计划是,我会在我的 Article
模型中有一个会话字段,将一篇文章与一个会话相关联。因此,当用户登录时,我可以获得他在该会话中创建的所有文章,然后适当地设置他们的 'user' 外键字段。
在我的 Article
模型中将会话存储为字段的最佳方式是什么?
class Article(models.Model):
pub_date = models.DateField()
headline = models.CharField(max_length=200)
user = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, blank=True)
session = ...?
使用CharField将request.session.session_key存入其中。
这是错误的方式。您应该将文章 ID 存储在会话中,而不是将会话密钥存储在模型中;然后,在登录时,您可以从会话中弹出该 ID,获取关联的文章,并设置用户。
假设我的站点存储文章,其中每篇文章都与创建它的用户相关联。我想允许未经身份验证的用户创建文章,然后 login/signup 他们创建的文章(在登录 in/signing 之前)与他们的用户实例相关联。
我解决这个问题的计划是,我会在我的 Article
模型中有一个会话字段,将一篇文章与一个会话相关联。因此,当用户登录时,我可以获得他在该会话中创建的所有文章,然后适当地设置他们的 'user' 外键字段。
在我的 Article
模型中将会话存储为字段的最佳方式是什么?
class Article(models.Model):
pub_date = models.DateField()
headline = models.CharField(max_length=200)
user = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, blank=True)
session = ...?
使用CharField将request.session.session_key存入其中。
这是错误的方式。您应该将文章 ID 存储在会话中,而不是将会话密钥存储在模型中;然后,在登录时,您可以从会话中弹出该 ID,获取关联的文章,并设置用户。