我的django应用程序中有一个简单的Post模型:
class Post(models.Model):
category = models.CharField(max_length=10, choices=choices)
message = models.CharField(max_length=500)
user = models.ForeignKey(User, editable=False)我想实现让匿名用户使用昵称创建帖子的功能。不幸的是,django不允许您将AnonymousUser的实例保存为Post类的外键。
我在考虑在数据库中添加一个代表匿名用户(id=0,如果可能的话,也可以是负数)的“虚拟”用户记录,它将用于所有没有用户的帖子。如果存在,将使用一个可以为空的name字段来表示匿名用户的昵称。
这个解决方案在我看来有点老生常谈。有没有更干净更有效的解决方案?
发布于 2011-01-03 21:09:11
如果你可以通过一些会话信息来识别新用户,你就可以创建正常的用户帐户,可以说是形式上的--用一个标记来识别他们是易失性的(这可能会导致一些定期的维护清理)。
如果在会话生存期内,用户确实想要注册,您可以重用您的用户帐户,并且用户可以将其所有数据保存在自己的帐户中。
正如@slacy评论和@Dominique回答的那样;与其滚动你自己的项目,不如看看现有的项目,例如:
发布于 2011-01-03 21:56:24
未经过测试,但这可能会有所帮助:https://github.com/danfairs/django-lazysignup
发布于 2011-01-03 21:08:16
如果用户是匿名用户,您可以将blank=True和null=True添加到User ForeignKey并将其设置为None。您只需要将昵称存储在某个位置。
https://stackoverflow.com/questions/4584657
复制相似问题