django中如果不是第一次迁移的时候就配置AUTH_USER_MODEL(用来告知django认证系统识别我们自定义的模型类),那么该如何解决才能让djang

网友投稿 410 2022-08-29


django中如果不是第一次迁移的时候就配置AUTH_USER_MODEL(用来告知django认证系统识别我们自定义的模型类),那么该如何解决才能让djang

Django认证系统中提供的用户模型类及方法很方便,我们可以使用这个模型类,但是字段有些无法满足项目需求,如还需要保存用户的手机号,需要给模型类添加额外的字段。

Django提供了django.contrib.auth.models.AbstractUser用户抽象模型类允许我们继承,扩展字段来使用Django认证系统的用户模型类。

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

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

from django.contrib.auth.models import AbstractUser"""不继承django提供的User,继承它的父类AbstractUser"""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' 参数的设置以`点.`来分隔,表示`应用名.模型类名`

注意:Django建议我们对于AUTH_USER_MODEL参数的设置一定要在第一次数据库迁移之前就设置好,否则后续使用可能出现未知错误。 不是第一次迁移的时候就配置AUTH_USER_MODEL的解决办法:

0. 先把现有的数据库导出备份,然后清掉数据库中所有的数据表。选中表,右键Dump Data to File->SQL Inserts,即可导出sql语句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步中的数据,以后如果要修改用户相关数据,不需要重复本次操作,直接数据迁移即可。7.把导出的sql语句重新插入到表中,

-------------------------------------------

个性签名:代码过万,键盘敲烂!!!

如果觉得这篇文章对你有小小的帮助的话,记得“推荐”哦,博主在此感谢!


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:django中的一些装饰器用法(django常用组件)
下一篇:SpringBoot与SpringCache概念用法大全
相关文章

 发表评论

暂时没有评论,来抢沙发吧~