一、重写User类:
1、首先导入User类:
from django.contrib.auth.models import User
2、然后点在User上,按住ctrl 点进去,发现
User类继承AbstractUser
Ctrl点进去AbstractUser,然后将此方法全部复制到自己APP的models.py里:
可以修改名字,导入
from django.contrib.auth.models import User, AbstractBaseUser, PermissionsMixin
选择自己需要的保留,添加自己需要的:(此时可以加上下面第8步的uid,要不还得重新创建数据库)
注:blank是代表是否能为空,unique是代表是否是唯一
3、设置状态(好像枚举):
class UserStatusChoices(models.IntegerChoices):
# 已经激活的
ACTIVED = 1
# 没有激活
UNACTIVE = 2
# 被锁定
LOCKED = 3
使用:
status = models.IntegerField(choices=UserStatusChoices, default=UserStatusChoices.UNACTIVE)
4、重写UserManager:
首先先导入UserManager ,然后ctrl查看:
将下面的复制到自己app的models.py里,导入BaseUserManager
可以改名字:
注:password直接定义在了AbstractBaseUser里,所以无需自己写
点击import的BaseUserManager,进入,找到import,将下面标红的复制到models.py里,可以把不需要的删掉,只保留make_password。
5、在settings.py里设置User模型是改成自己的User
# 覆盖django自带的User模型
# 'app.User模型名'
# 下面写法是不对的
# AUTH_USER_MODEL = 'apps.oaauth.models.OAUser'
AUTH_USER_MODEL = 'oaauth.OAUser'
6、同步数据库模型:
python manage.py makemigrations
python manage.py migrate
7、创建个超级用户:
python manage.py createsuperuser
8、修改OAUser的主键(为了安全性)
用唯一的字符串作为主键:
安装:
pip install django-shortuuidfield
在model.py里引用:
from shortuuidfield import ShortUUIDField
注意:如果已经创建了表,重新添加uid需要把数据库删了,重新创建,还需要把migrations文件夹里的文件删除: