我正在尝试使用管理页面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