首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在django中存储带有昵称的匿名用户的优雅方式?

在django中存储带有昵称的匿名用户的优雅方式?
EN

Stack Overflow用户
提问于 2011-01-03 21:05:32
回答 4查看 2K关注 0票数 4

我的django应用程序中有一个简单的Post模型:

代码语言:javascript
运行
复制
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字段来表示匿名用户的昵称。

这个解决方案在我看来有点老生常谈。有没有更干净更有效的解决方案?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-01-03 21:09:11

如果你可以通过一些会话信息来识别新用户,你就可以创建正常的用户帐户,可以说是形式上的--用一个标记来识别他们是易失性的(这可能会导致一些定期的维护清理)。

如果在会话生存期内,用户确实想要注册,您可以重用您的用户帐户,并且用户可以将其所有数据保存在自己的帐户中。

正如@slacy评论和@Dominique回答的那样;与其滚动你自己的项目,不如看看现有的项目,例如:

  • http://www.stereoplex.com/blog/introducing-django-lazysignup
票数 6
EN

Stack Overflow用户

发布于 2011-01-03 21:56:24

未经过测试,但这可能会有所帮助:https://github.com/danfairs/django-lazysignup

票数 1
EN

Stack Overflow用户

发布于 2011-01-03 21:08:16

如果用户是匿名用户,您可以将blank=Truenull=True添加到User ForeignKey并将其设置为None。您只需要将昵称存储在某个位置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4584657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档