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中readline判断文件读取结束的方法
Nov 08 Python
浅谈pyhton学习中出现的各种问题(新手必看)
May 17 Python
快速入门python学习笔记
Dec 06 Python
python logging日志模块以及多进程日志详解
Apr 18 Python
利用python和ffmpeg 批量将其他图片转换为.yuv格式的方法
Jan 08 Python
TensorFlow基于MNIST数据集实现车牌识别(初步演示版)
Aug 05 Python
python中利用numpy.array()实现俩个数值列表的对应相加方法
Aug 26 Python
python实现简易学生信息管理系统
Apr 05 Python
python获取引用对象的个数方式
Dec 20 Python
python读取tif图片时保留其16bit的编码格式实例
Jan 13 Python
Python3 中sorted() 函数的用法
Mar 24 Python
keras之权重初始化方式
May 21 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网页版聊天软件实现代码
2016/08/12 PHP
Laravel中任务调度console使用方法小结
2017/05/07 PHP
PHP7使用ODBC连接SQL Server2008 R2数据库示例【基于thinkPHP5.1框架】
2019/05/06 PHP
Laravel关系模型指定条件查询方法
2019/10/10 PHP
HTML颜色选择器实现代码
2010/11/23 Javascript
Javascript 键盘事件的组合使用实现代码
2012/05/04 Javascript
JSON+JavaScript处理JSON的简单例子
2013/03/20 Javascript
jquery表单验证框架提供的身份证验证方法(示例代码)
2013/12/27 Javascript
jQuery操作CheckBox的方法介绍(选中,取消,取值)
2014/02/04 Javascript
jquery的父子兄弟节点查找示例代码
2014/03/03 Javascript
CSS图片响应式 垂直水平居中
2015/08/14 Javascript
JavaScript从0开始构思表情插件
2016/07/26 Javascript
RequireJS简易绘图程序开发
2016/10/28 Javascript
AngularJS全局scope与Isolate scope通信用法示例
2016/11/22 Javascript
JS+canvas实现的五子棋游戏【人机大战版】
2017/07/19 Javascript
JavaScript函数中的this四种绑定形式
2017/08/15 Javascript
JavaScript+CSS相册特效实例代码
2017/09/07 Javascript
Web技术实现移动监测的介绍
2017/09/18 Javascript
微信小程序之滚动视图容器的实现方法
2017/09/26 Javascript
微信、QQ、微博、Safari中使用js唤起App
2018/01/24 Javascript
浅析Node.js非对称加密方法
2018/01/29 Javascript
微信小程序实现笑脸评分功能
2018/11/03 Javascript
Vue图片浏览组件v-viewer用法分析【支持旋转、缩放、翻转等操作】
2019/11/04 Javascript
[00:36]DOTA2上海特级锦标赛 Alliance战队宣传片
2016/03/04 DOTA
python获取图片颜色信息的方法
2015/03/18 Python
Python的消息队列包SnakeMQ使用初探
2016/06/29 Python
浅谈python jieba分词模块的基本用法
2017/11/09 Python
Python对列表去重的多种方法(四种方法)
2017/12/05 Python
Python解决N阶台阶走法问题的方法分析
2017/12/28 Python
django 连接数据库 sqlite的例子
2019/08/14 Python
Python网络编程之使用TCP方式传输文件操作示例
2019/11/01 Python
Grid 宫格常用布局的实现
2020/01/10 HTML / CSS
STAY JAPAN台湾:预订日本民宿
2018/07/22 全球购物
巾帼文明岗事迹材料
2014/12/24 职场文书
2015年国庆晚会主持词
2015/07/01 职场文书
公司年会主持词范文!
2019/05/07 职场文书