如何重新激活用户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)
我目前在 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)