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实现无证书加密解密实例
Oct 27 Python
Python中的defaultdict模块和namedtuple模块的简单入门指南
Apr 01 Python
浅谈Matplotlib简介和pyplot的简单使用——文本标注和箭头
Jan 09 Python
Django1.9 加载通过ImageField上传的图片方法
May 25 Python
朴素贝叶斯分类算法原理与Python实现与使用方法案例
Jun 26 Python
Python实现字符串匹配的KMP算法
Apr 04 Python
详解python--模拟轮盘抽奖游戏
Apr 12 Python
Python3进制之间的转换代码实例
Aug 24 Python
浅谈pytorch卷积核大小的设置对全连接神经元的影响
Jan 10 Python
Python如何把多个PDF文件合并代码实例
Feb 13 Python
Django数据库迁移常见使用方法
Nov 12 Python
解决python 在for循环并且pop数组的时候会跳过某些元素的问题
Dec 11 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流量统计功能的实现代码
2012/09/29 PHP
PHP获取浏览器信息类和客户端地理位置的2个方法
2014/04/24 PHP
PHP经典面试题之设计模式(经常遇到)
2015/10/15 PHP
Yii框架核心组件类实例详解
2019/08/06 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
用js实现计算加载页面所用的时间
2010/04/02 Javascript
基于jquery实现的自动补全功能
2015/03/12 Javascript
很棒的js选项卡切换效果
2016/07/15 Javascript
基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)
2016/09/02 Javascript
利用jquery实现验证输入的是否是数字、小数,包含保留几位小数
2016/12/07 Javascript
jquery实时获取时间的简单实例
2017/01/26 Javascript
jquery事件与绑定事件
2017/03/16 Javascript
解决JS内存泄露之js对象和dom对象互相引用问题
2017/06/25 Javascript
JS如何获取地址栏的参数实例讲解
2018/10/06 Javascript
JavaScript面向对象中接口实现方法详解
2019/07/24 Javascript
layUI实现三级导航菜单效果
2019/07/26 Javascript
python错误:AttributeError: 'module' object has no attribute 'setdefaultencoding'问题的解决方法
2014/08/22 Python
python threading模块操作多线程介绍
2015/04/08 Python
Python GUI布局尺寸适配方法
2018/10/11 Python
Python openpyxl 遍历所有sheet 查找特定字符串的方法
2018/12/10 Python
解决pycharm下os.system执行命令返回有中文乱码的问题
2019/07/07 Python
keras 读取多标签图像数据方式
2020/06/12 Python
如何利用Python 进行边缘检测
2020/10/14 Python
详解Django中的FBV和CBV对比分析
2021/03/01 Python
blueseventy官网:铁人三项和比赛泳衣
2021/02/06 全球购物
一道Delphi面试题
2016/10/28 面试题
高校毕业生登记表自我鉴定
2013/11/03 职场文书
社区工作者演讲稿
2014/05/23 职场文书
企业党员一句话承诺
2014/05/30 职场文书
意外死亡赔偿协议书
2014/10/14 职场文书
三傻大闹宝莱坞观后感
2015/06/03 职场文书
信用卡收入证明范本
2015/06/12 职场文书
小学校长开学致辞
2015/07/29 职场文书
2016年公务员六五普法心得体会
2016/01/21 职场文书
redis三种高可用方式部署的实现
2021/05/11 Redis
Python如何解决secure_filename对中文不支持问题
2021/07/16 Python