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编程实现语音控制电脑
Apr 01 Python
Python字符串替换实例分析
May 11 Python
requests和lxml实现爬虫的方法
Jun 11 Python
Python中的浮点数原理与运算分析
Oct 12 Python
Python 中Pickle库的使用详解
Feb 24 Python
DataFrame中去除指定列为空的行方法
Apr 08 Python
Python实现App自动签到领取积分功能
Sep 29 Python
PyQT5 QTableView显示绑定数据的实例详解
Jun 25 Python
python实现字典嵌套列表取值
Dec 16 Python
使用python3批量下载rbsp数据的示例代码
Dec 20 Python
python实现学生信息管理系统(精简版)
Nov 27 Python
Python列表元素删除和remove()方法详解
Jan 04 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和ACCESS写聊天室(十)
2006/10/09 PHP
盘点PHP和ASP.NET的10大对比!
2015/12/24 PHP
CakePHP框架Model关联对象用法分析
2017/08/04 PHP
PHP7新特性之抽象语法树(AST)带来的变化详解
2018/07/17 PHP
JavaScript asp.net 获取当前超链接中的文本
2009/04/14 Javascript
jquery 获取json数据实现代码
2009/04/27 Javascript
JQuery 将元素显示在屏幕的中央的代码
2010/02/27 Javascript
深入理解JavaScript系列(15) 函数(Functions)
2012/04/12 Javascript
html5 canvas js(数字时钟)实例代码
2013/12/23 Javascript
js加载读取内容及显示与隐藏div示例
2014/02/13 Javascript
JavaScript实现带标题的图片轮播特效
2015/05/20 Javascript
jQuery实现带延迟的二级tab切换下拉列表效果
2015/09/01 Javascript
浅谈javascript中onbeforeunload与onunload事件
2015/12/10 Javascript
微信小程序 中wx.chooseAddress(OBJECT)实例详解
2017/03/31 Javascript
vue双向数据绑定知识点总结
2018/04/18 Javascript
vue.js实现h5机器人聊天(测试版)
2020/07/16 Javascript
[46:43]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第二局
2016/03/02 DOTA
[45:17]DOTA2-DPC中国联赛定级赛 Phoenix vs DLG BO3第三场 1月9日
2021/03/11 DOTA
python sys模块sys.path使用方法示例
2013/12/04 Python
一份python入门应该看的学习资料
2018/04/11 Python
在unittest中使用 logging 模块记录测试数据的方法
2018/11/30 Python
Django命名URL和反向解析URL实现解析
2019/08/09 Python
PyCharm vs VSCode,作为python开发者,你更倾向哪种IDE呢?
2020/08/17 Python
python爬取代理IP并进行有效的IP测试实现
2020/10/09 Python
用HTML5中的Canvas结合公式绘制粒子运动的教程
2015/05/08 HTML / CSS
瑞典香水、须后水和美容产品购物网站:Parfym-Klick.se
2019/12/29 全球购物
教育学专业毕业生的自我鉴定
2013/11/26 职场文书
年度考核自我评价
2014/01/25 职场文书
学生会感恩节活动方案
2014/10/11 职场文书
医务人员岗前培训心得体会
2016/01/08 职场文书
开网店计划分析
2019/07/30 职场文书
个人职业生涯规划之自我评估篇
2019/09/03 职场文书
MySQL查询学习之基础查询操作
2021/05/08 MySQL
MySQL完整性约束的定义与实例教程
2021/05/30 MySQL
OpenCV-Python实现图像平滑处理操作
2021/06/08 Python
海弦WR-800F
2022/04/05 无线电