首页 > 其他 > 详细

django-创建自定义的用户模型类

时间:2020-06-04 15:57:57      阅读:39      评论:0      收藏:0      [点我收藏+]

Django认证系统中提供的用户模型类及方法很方便,我们可以使用这个模型类,但是字段有些无法满足项目需求,如本项目中需要保存用户的手机号,需要给模型类添加额外的字段。
Django提供了django.contrib.auth.models.AbstractUser用户抽象模型类允许我们继承,扩展字段来使用Django认证系统的用户模型类。

我们可以在apps中创建Django应用users,并在配置文件中注册users应用。

创建用户模块的子应用
python ../../manage.py startapp users
在settings.py文件中注册子应用。

INSTALLED_APPS = [
		...
  	‘users‘,
]

在创建好的应用models.py中定义用户的用户模型类

class User(AbstractUser):
    """用户模型类"""
    mobile = models.CharField(max_length=11, unique=True, verbose_name=‘手机号‘)

    class Meta:
        db_table = ‘ly_users‘
        verbose_name = ‘用户‘
        verbose_name_plural = verbose_name

我们自定义的用户模型类还不能直接被Django的认证系统所识别,需要在配置文件中告知Django认证系统使用我们自定义的模型类。
在配置文件中进行设置 AUTH_USER_MODEL = ‘users.User‘
AUTH_USER_MODEL 参数的设置以点.来分隔,表示应用名.模型类名
注意:Django建议我们对于AUTH_USER_MODEL参数的设置一定要在第一次数据库迁移之前就设置好,否则后续使用可能出现未知错误。
执行数据库迁移

python manage.py makemigrations
python manage.py migrate

如果在第一次数据迁移以后,才设置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步中的数据,以后如果要修改用户相关数据,不需要重复本次操作,直接数据迁移即可。```

django-创建自定义的用户模型类

原文:https://www.cnblogs.com/freedom0923/p/13042719.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!