【问题标题】:Customizing Django Admin Add User With Blank Password自定义 Django 管理员使用空白密码添加用户
【发布时间】:2021-12-31 12:53:38
【问题描述】:

我正在创建一个具有自定义用户身份验证策略的 Django Web 应用程序:只有超级用户有密码,用户标识字段是电子邮件字段。普通用户只能通过 OAuth 协议登录,所以我不需要为他们存储密码。我通过覆盖和扩展 AbstractBaseUser 类创建了一个自定义用户。

在 Django Admin 中有没有办法允许添加/编辑具有空白密码字段(不可用的密码)的用户? 谢谢。

【问题讨论】:

    标签: python django django-admin django-custom-user


    【解决方案1】:

    类 UserAccountManager(BaseUserManager):

    def _create_user(self, username, password, is_staff, is_superuser, **extra_fields):
        if not username:
            raise ValueError('Username is required.')
        now = timezone.now()
        username = self.model.normalize_username(username)
        user = self.model(
            username=username,
            is_staff=is_staff,
            is_active=True,
            is_superuser=is_superuser,
            last_login=now,
            date_joined=now,
            **extra_fields
        )
        user.set_password(password)
        user.save(using=self._db)
        return user
    
    def create_user(self, username=None, password=None, **extra_fields):
        return self._create_user(username, password, False, False, **extra_fields)
    
    def create_superuser(self, username, password, **extra_fields):
        user = self._create_user(username, password, True, True, **extra_fields)
        user.save(using=self._db)
        return user
    

    【讨论】:

    • 我的 BaseUserManager 与它非常相似,但它无法正常工作。
    【解决方案2】:

    将以下代码行添加到您的自定义用户模型:

    password = models.CharField(_('password'), max_length=128 , blank=True, null=True)
    

    这将允许 Django Admin 允许添加没有密码的用户。 如果它不起作用,则使用AbstractUser 而不是AbstractBaseUser。 当我为我的项目工作时,我已经测试过这种类型的问题。

    【讨论】:

    • 我已经在我的自定义模型中完成了它,它不起作用。这就是我在 AbstractBaseUesr 中的内容: class TestPartyUser(AbstractBaseUser, PermissionsMixin): email = models.EmailField(max_length=50, unique=True, null=False) password = models.CharField(max_length=128, null=True, default =无,空白=真)
    猜你喜欢
    • 2013-03-09
    • 1970-01-01
    • 1970-01-01
    • 2015-01-06
    • 1970-01-01
    • 1970-01-01
    • 2020-11-12
    • 2011-09-09
    • 1970-01-01
    相关资源
    最近更新 更多