【问题标题】:Django custom user 'Account' object has no attribute 'has_module_perms'Django 自定义用户 'Account' 对象没有属性 'has_module_perms'
【发布时间】:2021-11-21 18:22:27
【问题描述】:

我创建了一个自定义用户模型以通过电子邮件登录,但是当我尝试登录管理员频道时遇到了一些问题

from django.db import models
from django.contrib.auth.models import AbstractBaseUser, BaseUserManager
class MyAccountManajer(BaseUserManager):
    def create_user(self, first_name, last_name, username, email, password=None):
        if not email:
            raise ValueError('User must have an email address')
        
        if not username:
            raise ValueError('User must have an username')

        user = self.model(
            email = self.normalize_email(email),
            username = username,
            first_name = first_name,
            last_name = last_name,
        )
        user.set_password(password)
        user.save(using=self.db)
        return user

    def create_superuser(self, first_name, last_name, username, email, password):
         user = self.create_user(
            email = self.normalize_email(email),
            password= password,
            username = username,
            first_name = first_name,
            last_name = last_name,
         )
         user.is_admin = True
         user.is_active = True
         user.is_staff = True
         user.is_superadmin = True
         user.save(using=self.db)
         return user

我能够创建一个超级用户。但是,当我尝试使用电子邮件登录时。我得到了这个错误 异常类型:属性错误 异常值:“帐户”对象没有属性“has_module_perms” 异常位置:....\env\lib\site-packages\django\utils\functional.py,第 241 行,inner

有人可以解决这个问题吗?

【问题讨论】:

    标签: python python-3.x django backend


    【解决方案1】:

    你需要在你的类中添加“PermissionsMixin”来获取你需要的方法

    from django.contrib.auth.models import PermissionsMixin 
    
    class MyAccountManajer(AbstractBaseUser, PermissionsMixin):
            
    

    您可以在此处找到类似问题的答案:custom django-user object has no attribute 'has_module_perms'

    【讨论】:

    • 它有效,在我的第一次尝试中,我无法在 django admin 中进行编辑,但问题是我忘记删除一些文件,感谢 ToT
    • 很高兴它正在工作!如果这是解决您的问题的方法,请将其作为答案进行检查。如果没有,请写一个答案并检查它以帮助面临同样问题的人。
    猜你喜欢
    • 2015-09-30
    • 2019-03-19
    • 2019-04-15
    • 2017-06-04
    • 1970-01-01
    • 2020-03-10
    • 2011-12-14
    • 2018-08-09
    • 1970-01-01
    相关资源
    最近更新 更多