1.创建子应用users,并在配置文件中注册子应用users应用
#在创建子应用下的models文件中添加模型
from django.db import models
# Create your models here.
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
"""自定义用户"""
mobile = models.CharField(max_length=15, verbose_name="手机号码")
avatar = models.ImageField(upload_to="avatar",null=True,blank=True, verbose_name="用户头像")
wechat = models.CharField(max_length=50,null=True,blank=True, verbose_name="微信号")
class Meta:
db_table = "ly_user"
verbose_name = "用户信息"
verbose_name_plural = verbose_name
def __str__(self):
return self.username
2.在settings.dev文件中进行设置,(目的是被django认证系统识别)
AUTH_USER_MODEL = 'users.User'
#users 是子应用的名字
3.执行数据迁移
python manage.py makemigrations
python manage.py migrate
4.如果在第一次数据迁移以后,才设置AUTH_USER_MODEL自定义用户模型,则会报错。解决方案如下:
0. 先把现有的数据库导出备份,然后清掉数据库中所有的数据表。
1. 把开发者创建的所有子应用下面的migrations目录下除了__init__.py以外的所有迁移文件,只要涉及到用户的,一律删除
2. 把django.contrib.admin.migrations目录下除了__init__.py以外的所有迁移文件,全部删除。
3. 把django.contrib.auth.migrations目录下除了__init__.py以外的所有迁移文件,全部删除。
4. 把reversion.migrations目录下除了__init__.py以外的所有迁移文件,全部删除。
5. 把xadmin.migrations目录下除了__init__.py以外的所有迁移文件,全部删除。
6. 接下来,执行数据迁移,回顾第0步中的数据,以后如果要修改用户相关数据,不需要重复本次操作,直接数据迁移即可。