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

The*_*One 4 database django anonymous-users

我的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)
Run Code Online (Sandbox Code Playgroud)

我想实现让匿名用户创建带昵称的帖子的功能.不幸的是,django不允许您将AnonymousUser的实例保存为Post类的外键.

我想在db中添加一个"虚拟"用户记录,代表匿名用户(id = 0,或者如果可能的话,还有一些负数),用于没有用户的所有帖子.如果存在,则可以使用可以为空的名称字段来表示匿名用户的昵称.

这个解决方案对我来说似乎有些苛刻.有没有更清洁更有效的解决方案?

mik*_*iku 6

如果你可以通过一些会话信息识别的新用户,你可以只创建普通用户帐号,备考这么说-一个标志来识别它们挥发性(这可能会导致一些定期维护清理).

如果在会话生命周期内,用户实际上想要注册,您可以重复使用您自己的用户帐户,并且用户可以将所有数据保存在他的身上.

@slacy评论说,@ Dominique回答; 而不是滚动你自己看看现有的项目,例如: