更改AUTH_USER_MODEL

时间:2018-04-26 10:50:27

标签: django django-models

我正在尝试使用管理页面django制作一个小型身份验证应用 将不再有效,问题发生在我更改{strong> settings.py 内的AUTH_USER_MODEL后,现在如果我输入python manage.py createsuperuser它会给我不同的字段,更重要的是,如果我试图访问管理页面,它会要求我的电话号码为登​​录而不是用户名。

同样在数据库内部我看不到任何属于 auth_user 的表,事实上,我进行了迁移,但它只是识别客户端模型而不是管理模型。

有没有办法让我的两个模型都有效?

以下是我的代码:

settings.py

AUTH_USER_MODEL = 'authiz.Client'
AUTHENTICATION_BACKENDS = (
    'django.contrib.auth.backends.ModelBackend',
    'authiz.models.Client',
)
# Login settings
LOGIN_URL = 'login'
LOGOUT_URL = 'index'
LOGIN_REDIRECT_URL = 'profile'

models.py

class Client(AbstractBaseUser, PermissionsMixin):
    email = models.EmailField(null=True, blank=True, unique=True)
    phone = models.CharField(max_length=18,unique=True)
    joined = models.DateTimeField(auto_now_add=True)
    first_name = models.CharField(max_length=200, null=True, blank=True)
    last_name = models.CharField(max_length=200, null=True, blank=True)
    is_staff = models.BooleanField(default=False)
    password = models.CharField(default='', null=False, max_length=255)

    USERNAME_FIELD = 'phone'

    objects = UserManager()

    def get_username(self):
        return self.first_name

    def get_short_name(self):
        return self.last_name

    def __str__(self):
        return self.phone

    def natural_key(self):
        return (self.get_username(),)

    def set_password(self, raw_password):
        self.password = make_password(raw_password)

    def check_password(self, raw_password):
        def setter(raw_password):
            self.set_password(raw_password)
            self.save(update_fields=["password"])
        return check_password(raw_password, self.password, setter)

    def set_unusable_password(self):
        self.password = make_password(None)

    def has_usable_password(self):
        return is_password_usable(self.password)

    def is_superuser(self):
        return False

    def is_admin(self):
        return False

0 个答案:

没有答案