python - Django自定义用户中密码重置期间的字段错误
问题描述
我的 django 应用程序中有一个自定义用户。当我在内置密码重置表单中提交电子邮件以重置密码时,我收到以下错误
/password_reset/ 处的 FieldError 无法将关键字“is_active”解析为字段。选项包括:活动、地址、管理员、简历、公司类别、公司描述、公司名称、公司站点、国家、名称、电子邮件、名字、毕业年份、id、最后登录、姓氏、链接、登录、市场、no_employees、密码、电话、照片、简历, 员工, 技术, 大学
我的自定义用户模型和模型管理器如下:
# ----------------------------- USER MANAGER -----------------------------
class UserManager(BaseUserManager):
def create_user(self, email, password=None, is_active=True, is_staff=False, is_admin=False):
if not email:
raise ValueError("Users must have an email address")
if not password:
raise ValueError("Users must have a password")
user_obj = self.model(
email = self.normalize_email(email),
)
user_obj.staff = is_staff
user_obj.admin = is_admin
user_obj.active = is_active
user_obj.set_password(password)
user_obj.save(using=self._db)
return user_obj
def create_staffuser(self, email, password=None):
user = self.create_user(
email,
password=password,
staff=True,
admin=True
)
return user
def create_superuser(self, email, password=None):
user = self.create_user(
email,
password=password,
is_staff=True,
is_admin=True
)
return user
# ----------------------------- CUSTOM USER -----------------------------
class User(AbstractBaseUser):
email = models.EmailField(max_length=255, unique=True)
first_name = models.CharField(max_length=255)
last_name = models.CharField(max_length=255)
resume = models.FileField(upload_to='res/', blank=True, null=True, verbose_name='resume')
photo = models.ImageField(upload_to='pi/', default='img/default.png', blank=True, null=True)
bio = models.CharField(max_length=1000)
designation = models.CharField(max_length=255)
university = models.CharField(max_length=255)
company_name = models.CharField(max_length=255)
grad_year = models.IntegerField(blank=False, null=True)
phone = models.CharField(max_length=255)
address = models.CharField(max_length=255)
country = models.CharField(max_length=255)
company_category = models.CharField(max_length=255, blank=False)
company_desc = models.CharField(max_length=800, blank=False)
company_site = models.CharField(max_length=255)
no_employees = models.IntegerField(blank=False, null=True)
technologies = models.CharField(max_length=255, blank=False)
markets = models.CharField(max_length=255, blank=False)
linkedin = models.CharField(max_length=255, blank=False)
active = models.BooleanField(default=True)
staff = models.BooleanField(default=False)
admin = models.BooleanField(default=False)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = [] #python manage.py createsuperuser asks for these fields
objects = UserManager()
def __str__(self):
return self.email
def get_full_name(self):
if self.full_name:
return self.full_name
else:
return self.email
def get_short_name(self):
return self.email
def has_perm(self, perm, obj=None):
return True
def has_module_perms(self, app_label):
return True
@property
def is_staff(self):
return self.staff
@property
def is_admin(self):
return self.admin
@property
def is_active(self):
return self.active
如何解决?
解决方案
推荐阅读
- c# - 将 Sql 语句更改为 Bql
- java - 如何在 Spring 批处理应用程序中创建 List OR ArrayList 对象单例。java - 如何在java spring batch/boot中将字段注释为单例
- vue.js - 部署后 Vuetify 元素在 netlify 上显示不完美
- php - 如何获取 Icecast 服务器歌曲历史记录
- php - 构成连接帐户支出的条带交易
- automation - 使用 Jest 的 SPFX 扩展中的自动化单元测试用例
- load-balancing - 如何配置/创建一个负载均衡器来处理需要在同一台服务器上的用户
- c# - ASP.NET MVC:如何防止导致 IIS 应用程序池关闭的异常
- ms-access - 如何将表单中的现有字段添加到 Microsoft Access 中的现有表中
- flutter - 如何在颤动的大小框中添加两个参数?