Django自定义用户模型类

Django自带的用户模型类及方法很方便,可以满足基本的使用要求,但如果有些自带不满足,就需要自定义用户模型类。

1、创建一个模型类,继承AbstractUser


# models.py 文件代码

from django.contrib.auth.models import AbstractUser
from django.db import models

# 自定义用户模型类
class UserInfo(AbstractUser):
	# 自定义字段
    mobile = models.CharField(verbose_name="手机号", max_length=11)
    

2、配置settings文件,格式: ‘app名.表名’

# settings.py 配置 
AUTH_USER_MODEL = 'vueshop.UserInfo'

注意:Django建议我们对于AUTH_USER_MODEL参数的设置一定要在第一次数据库迁移之前就设置好,否则后续会出现错误。

本人当时先做过数据库迁移操作,然后又进行自定义用户模型类,再次进行迁移时就报错。最后解决办法是:把表和迁移文件都删除了,重新操作。

如果在第一次数据迁移以后,才设置AUTH_USER_MODEL自定义用户模型,报错的解决方法如下

0. 先把现有的数据库导出备份,然后清掉数据库中所有的数据表。
1. 把开发者创建的所有子应用下面的migrations目录下除了__init__.py以外的所有迁移文件,只要涉及到用户的,一律删除,并将django-migrations表中的数据全部删除。
2. 把django.contrib.admin.migrations目录下除了__init__.py以外的所有迁移文件,全部删除。
3. 把django.contrib.auth.migrations目录下除了__init__.py以外的所有迁移文件,全部删除。
4. 把reversion.migrations目录下除了__init__.py以外的所有迁移文件,全部删除。这个不在django目录里面,在site-packages里面,是xadmin安装的时候带的,它会记录用户信息,也需要删除
5. 把xadmin.migrations目录下除了__init__.py以外的所有迁移文件,全部删除。
6. 删除我们当前数据库中的所有表
7. 接下来,执行数据迁移(makemigrations和migrate),回顾第0步中的数据,将数据导入就可以了,以后如果要修改用户相关数据,不需要重复本次操作,直接数据迁移即可。

你可能感兴趣的:(Django,django,python,后端)