首页 文章

Django Custom Auth Model无法从管理员门户登录

提问于
浏览
1

我为Django的auth app创建了自定义用户配置文件模型,以及我无法使用Django Admin登录表单登录的问题 .

注意:用户 is_superuser=1is_staff=1

models.py
=======================
class UserProfile(AbstractUser):
    gender = models.IntegerField(choices=GENDER_CHOICES, verbose_name='Gender', default=1)
    civil_id = models.CharField(max_length=12, verbose_name='Civil ID')
    tel_num = models.CharField(max_length=18, blank=True, verbose_name='Telephone Number')
    mob_num = models.CharField(max_length=18, verbose_name='Mobile Number')
    dob = models.DateField(verbose_name='Date of birth', null=True)
    country = models.ForeignKey(Country, verbose_name='Country', null=True)
    province = models.ForeignKey(Province, verbose_name='Province', null=True)
    area = models.ForeignKey(Area, verbose_name='Area', null=True)
    address = models.CharField(max_length=100)
    profile_image = models.ImageField(upload_to=user_directory_path, verbose_name='Profile Image', default='')
    secondary_email = models.EmailField(verbose_name='Secondary Email',
                                        help_text='This email address will be used in case of account recovery',
                                        blank=True)
    is_verified = models.BooleanField(verbose_name='Verified', default=False)
    verification_request = models.CharField(max_length=25, default=generate_verification_code)
    is_in_smart_launch = models.BooleanField(default=False, verbose_name='Is profile created in smartlaunch')
    branch = models.ForeignKey(Branch, related_name='users', null=True)

并使用 set_password() 保存userprofile

Screenshot:
enter image description here

2 回答

  • 0

    在没有 username 字段的情况下定义自定义用户时遇到类似问题 . 设置 is_adminis_staff 字段后,管理员登录页面再次起作用 . 我的代码如下所示

    class MyUser(AbstractBaseUser, PermissionsMixin):                                  
        """                                                                            
        A custom class for user authentication. It gets rid of 
        'username' and uses 'email' for that purpose.                                                      
        """                                                                            
        email = models.EmailField(                                                     
             max_length=64,                                                             
            unique=True)                                    
        is_active = models.BooleanField(default=True,)          
        is_staff = models.BooleanField(default=False)                                  
        is_admin = models.BooleanField(default=False)                                  
    
        objects = MyUserManager()                                                      
    
        USERNAME_FIELD = 'email'                                                       
        REQUIRED_FIELDS = []                                                           
    
        def __str__(self):                                                             
            return self.email                                                          
        # more code below omitted
    
  • 0

    如果用户不是工作人员,则不能使用管理员登录(因为错误是sais) . 如果你想要一个内置的登录页面,你可以使用 /accounts/login 这是 settings.LOGIN_URL 的默认值

相关问题