gpt4 book ai didi

python - Django 处理匿名用户

转载 作者:行者123 更新时间:2023-11-28 18:59:24 26 4
gpt4 key购买 nike

我正在尝试实现对板的匿名写入。

匿名用户的信息(IP地址和昵称)必须存储在数据库中。

目前,我有一个 User 模型和一个 Article 模型。

class User(AbstractBaseUser, PermissionsMixin):
username = models.CharField(_('Username'), unique=True, null=True)

etc...

class Article(models.Model):

id = models.AutoField(primary_key=True)
author = models.ForeignKey(User, verbose_name=_("Author"), on_delete=models.PROTECT, null=True, blank=True)

etc....

我想到了几种实现匿名写功能的方法。

  1. 为每个匿名用户创建仅包含 ip 地址和昵称的 User 并为该用户设置外键。

    class User(AbstractBaseUser, PermissionsMixin):
    TYPE_FIXED_USER = 0
    TYPE_ANONYMOUS = 1

    TYPE_CHOICES = (
    (TYPE_FIXED_USER, 'Fixed User'),
    (TYPE_ANONYMOUS, 'Annonymous'),
    )

    user_type = models.IntegerField(_('User type'), choices=UserType.TYPE_CHOICES)

    这看起来是最简单的方法,但我担心它会创建大量 User 并导致数据库负载过高。

  2. 文章中添加author_typeanon_author_ipanon_author_nick字段。

    class Article(models.Model):
    TYPE_FIXED_USER = 0
    TYPE_ANONYMOUS = 1

    TYPE_CHOICES = (
    (TYPE_FIXED_USER, 'Fixed User'),
    (TYPE_ANONYMOUS, 'Annonymous'),
    )

    author_type = models.IntegerField(_('Author type'), choices=UserType.TYPE_CHOICES)

    这似乎还可以,但是通过昵称搜索文章会很困难。如果我要搜索用户 'user1234',我将不得不寻找 Article.objects.filter(user__nickname__contains='user1234')Article.objects。 filter(anon_author_nick__contains='user1234') 并加入他们。

有没有更高效的方法?

最佳答案

看起来第一种方式比第二种方式好,不用担心数据库数量

基本上如果你想保存匿名用户,你已经决定删除​​你网站的注册部分并且仍然保存了用户,所以你必须像固定用户一样并为以下用户生成随机用户名或昵称没有密码

我建议你使用这种简单的方法,如果你想加速你是 DB,你可以使用 Redis

关于python - Django 处理匿名用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54492658/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com