django 解决扩展自带User表遇到的问题


Posted in Python onMay 14, 2020

首先要扩展自带的auth_user表我就放个图吧,

django 解决扩展自带User表遇到的问题

同时setting中应该设置:

# 此处重载是为了使UserProfile生效
AUTH_USER_MODEL = "EcdsApp.UserProfile"

本人的项目需要对此表进行扩展,再建两个子表关联这个表,关联关系为一对一:

修改完成之后进行子表关联:

from django.contrib.auth.models import AbstractUser, User
from django.conf import settings
class UserInfo(models.Model):
  user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)

直接关联肯定会报错,此时加入上面两段代码,

第一个是引入 setting

第二个是在关联字段哪里将原有的User 更换为setting.AUTH_USER_MODEL

此时再次迁移应该就能成功了,

能够迁移成功但是还会有问题。

我后面的功能代码中原先写的有用到;User这个表的地方,代码运行到这里就会出错。

报错信息如下

AttributeError: Manager isn't available; 'auth.User' has been swapped for 'EcdsApp.UserProfile'

原因是原User表已经发生改变这里也需要变动一下:

from django.contrib.auth import get_user_model
User = get_user_model()

直接将这两行加入到你所有使用到原User表的py文件中,基本问题就可以解决!

补充知识:Python+ django + pycharm项目之扩展默认user表

django为我们提供了默认的user表,但是在实际的开发项目的基本是不满足实际情况的,所以呢学习web知识,扩展默认user表是必不可少的一部分,虽然很简单,但是呢还是在此来加深下自己的记忆。

在django项目中,所有的数据库表都是根据各APP的模型来生成的,我们创建项目后第一件事就是要去完善user表,这个利用的知识点就是Python类的继承,假如,我要创建UserProfile类来继承原来的AbstractUser类,从而继承原来user表的字段,又可以增加自己需要的字段:

在users 用户app的models.py做如下的修改:

from django.db import models
 
from django.contrib.auth.models import AbstractUser  # 引入原来的Abstract类
 
# 创建新的类来继承原来的类,并拓展自己的字段
class UserProfile(AbstractUser):
  nick_name = models.CharField(max_length=20, verbose_name='昵称')
  birthday = models.DateField(verbose_name='生日', null=True, blank=True)
  gender = models.CharField(choices=(('male', '男'), ('female', '女')), verbose_name='性别', default='feamale', max_length=10)
  address = models.CharField(max_length=50, verbose_name='地址', default='')
  mobile = models.CharField(max_length=11, verbose_name='联系电话', null=True, blank=True)
  image = models.ImageField(upload_to='image/%Y/%m', default='image/default.png', max_length=100)
 
  class Meta:
    verbose_name = '用户信息'
    verbose_name_plural = verbose_name
 
  def __str__(self):
    return self.username

修改了models.py中代码后,需要注册你创建的app,django中是如何来识别你创建的APP呢,查看各APP的apps,py文件

django 解决扩展自带User表遇到的问题

文件中的name=‘users'代表着django可以识别该名称为这个APP的名称,于是就可以在settings.py文件中进行注册APP了:

django 解决扩展自带User表遇到的问题

还需要配置一个参数:AUTH_USER_MODEL = 'users.UserProfile'

django 解决扩展自带User表遇到的问题

最后迁移数据库,使用makemigrations 和 migrate 就可以完成user表的扩展了,刷新数据库,表是不是已经生成了0.0

以上这篇django 解决扩展自带User表遇到的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现sublime3的less编译插件示例
Apr 27 Python
Python 执行字符串表达式函数(eval exec execfile)
Aug 11 Python
机器学习python实战之手写数字识别
Nov 01 Python
Python使用matplotlib简单绘图示例
Feb 01 Python
Python爬虫实现全国失信被执行人名单查询功能示例
May 03 Python
Python实现正整数分解质因数操作示例
Aug 01 Python
详解python的argpare和click模块小结
Mar 31 Python
django 捕获异常和日志系统过程详解
Jul 18 Python
pytorch-神经网络拟合曲线实例
Jan 15 Python
Python创建简单的神经网络实例讲解
Jan 04 Python
python元组打包和解包过程详解
Aug 02 Python
Python os和os.path模块详情
Apr 02 Python
解决更改AUTH_USER_MODEL后出现的问题
May 14 #Python
Python基于numpy模块实现回归预测
May 14 #Python
Django之全局使用request.user.username的实例详解
May 14 #Python
Django使用Profile扩展User模块方式
May 14 #Python
python网络编程之五子棋游戏
May 14 #Python
Jupyter notebook如何修改平台字体
May 13 #Python
解决启动django,浏览器显示“服务器拒绝访问”的问题
May 13 #Python
You might like
php合并数组array_merge函数运算符加号与的区别
2008/10/31 PHP
php生成静态文件的多种方法分享
2012/07/17 PHP
PHP-redis中文文档介绍
2013/02/07 PHP
php中session过期时间设置及session回收机制介绍
2014/05/05 PHP
PHP+Ajax异步带进度条上传文件实例
2016/11/01 PHP
PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
2018/12/08 PHP
繁简字转换功能
2006/07/19 Javascript
基于JavaScript 类的使用详解
2013/05/07 Javascript
javascript实现控制文字大中小显示
2015/04/28 Javascript
jQuery中$.ajax()和$.getJson()同步处理详解
2015/08/12 Javascript
一款简单的jQuery图片标注效果附源码下载
2016/03/22 Javascript
使用jquery获取url以及jquery获取url参数的实现方法
2016/05/25 Javascript
JS控制静态页面传递参数并获取参数应用
2016/08/10 Javascript
jquery操作ul的一些操作笔记整理(干货)
2017/08/31 jQuery
Vue中使用的EventBus有生命周期
2018/07/12 Javascript
使用vue编写h5公众号跳转小程序的实现代码
2020/11/27 Vue.js
[47:45]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第一场 2月26日
2021/03/11 DOTA
Python编码时应该注意的几个情况
2013/03/04 Python
Python内置函数dir详解
2015/04/14 Python
举例讲解Python设计模式编程中的访问者与观察者模式
2016/01/26 Python
Python实现代码统计工具(终极篇)
2016/07/04 Python
Python实现 多进程导入CSV数据到 MySQL
2017/02/26 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
2018/03/13 Python
Python爬虫包BeautifulSoup学习实例(五)
2018/06/17 Python
利用Django模版生成树状结构实例代码
2019/05/19 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
2019/12/19 Python
python 实现保存最新的三份文件,其余的都删掉
2019/12/22 Python
关于Python3爬虫利器Appium的安装步骤
2020/07/29 Python
Python爬虫如何破解JS加密的Cookie
2020/11/19 Python
css3实现简单的白云飘动背景特效
2020/10/28 HTML / CSS
Sixt美国租车:高端豪华车型自驾体验
2017/09/02 全球购物
北美领先的智能产品购物网站:Wellbots
2018/06/11 全球购物
中兴通讯全球官方网站:ZTE
2020/12/26 全球购物
农行实习自我鉴定
2013/09/22 职场文书
建筑工地门卫岗位职责
2014/04/30 职场文书
公安机关纪律作风整顿剖析
2014/10/10 职场文书