如何重新激活用户django

How to reactivate user django

我目前在 Django 中将 is_active 字段从 False 设置回 True 时遇到问题。我有一个自定义帐户模型,它继承自 AbstractBaseUser 并由 class AccountManager(BaseUserManager) 管理。

默认情况下,我将 is_active 字段覆盖为 False。但是,当我再次尝试重新激活该字段时。它确实在 python manage.py shell 时更新,但当我注销并重新登录到 shell 时。 is_active 字段仍然是 False。下面是我的 activateUser() 函数

def activateUser(self, account):
    account.is_active = True
    account.save()

    return account

下面是我的python manage.py shell表演:

>>> from authentication.models import Account
>>> a = Account.objects.all()[0]
>>> a.is_active
False
>>> Account.objects.activateUser(a)
>>> a.is_active
True
>>> exit()

python manage.py shell
>>> from authentication.models import Account
>>> a = Account.objects.all()[0]
>>> a.is_active
False

更新:这是我的帐户class。上面的 activateUser() 函数来自 AccountManager class ,它继承自 BaseUserManager 并且正在管理帐户 class.

class Account(AbstractBaseUser):
    """
    Create a new model from AbstractBaseUser account to have our own fields
    """
    username = models.CharField(max_length=40, unique=True)
    email = models.EmailField(unique=True)

    firstName = models.CharField(max_length=40, blank=True, null=True)
    lastName = models.CharField(max_length=40, blank=True, null=True)

    createdAt = models.DateTimeField(auto_now_add=True)
    updatedAt = models.DateTimeField(auto_now=True)

    is_staff = models.BooleanField(default=False)
    is_active = False

    objects = AccountManager()

    USERNAME_FIELD = 'username'
    REQUIRED_FIELDS = ['email']

    def __unicode__(self):
        return self.username

    def get_full_name(self):
        return self.firstName + ' ' + self.lastName

    def get_short_name(self):
        return self.firstName

没有地方可以保存 is_active,因为您还没有为它分配数据库字段。

您应该将模型中的 is_active 更改为:

is_active = models.BooleanField(default=False)

在您的帐户模型中,将 is_active 字段定义更改为:

    is_active = models.BooleanField(verbose_name=_("active"), default=False)