码迷,mamicode.com
首页 > 其他好文 > 详细

重写用户模型

时间:2018-07-23 20:22:20      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:col   自动生成   efault   def   应用   nsis   depend   admin   style   

我们在设计models数据库的用户管理会用到各种各种字段,比如用户名,密码,用户登录状态等,这些字段如果自己来写的话相当麻烦,这时候可以用django系统自动生成的user表。

来看auth_user的表结构:

 技术分享图片

但是想要在django内建的User模型不一定适合你的需求。django允许你通过 AUTH_USER_MODEL 设置 覆盖User模型。

AUTH_USER_MODEL = "myapp.MyUser"

上面的值表示Django 应用的名称(必须位于 INSTALLED_APPS 中) 和你想使用的User 模型的名称。

改变 AUTH_USER_MODEL 对你的数据库结构有很大的影响。它改变了一些会使用到的表格,并且会影响到一些外键和多对多关系的构造。如果你打算设置 AUTH_USER_MODEL , 你应该在创建任何迁移或者第一次运行manage.py migrate 前设置它。

错误提示:

如果你在迁徙的过程中出现以下两种错误,那么恭喜你

错误一、

auth.User.groups: (fields.E304) Reverse accessor for User.groups clashes

请检查是否在项目中配置

settings.py

AUTH_USER_MODEL = myapp.MyUser

错误二、

django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_initial is applied before its dependency user.0001_initial on database default

 

请将系统自动生成的auth_user表删除,这是因为Django中有一个原生的User模型类,admin的模型依赖这个模型类,由于前面一个应用中的模型类User继承了AbstractUser类。

但是在删除auth_user的时候你可能会遇到外键关联等问题导致auth_user不能删除的问题,那么请将系统自动生成的表全部删除。

技术分享图片

(将所有表删除)

在后续的迁移过程中,这些表都会重新建立。

 

重写用户模型

标签:col   自动生成   efault   def   应用   nsis   depend   admin   style   

原文地址:https://www.cnblogs.com/welan/p/9356557.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!