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简单生成8位随机密码的方法
May 24 Python
Python中工作日类库Busines Holiday的介绍与使用
Jul 06 Python
Python加载带有注释的Json文件实例
May 23 Python
python去除拼音声调字母,替换为字母的方法
Nov 28 Python
python 删除字符串中连续多个空格并保留一个的方法
Dec 22 Python
django中SMTP发送邮件配置详解
Jul 19 Python
python+mysql实现个人论文管理系统
Oct 25 Python
PyQt5中QTableWidget如何弹出菜单的示例代码
Feb 23 Python
python 使用递归回溯完美解决八皇后的问题
Feb 26 Python
详解Python中namedtuple的使用
Apr 27 Python
python怎么对数字进行过滤
Jul 05 Python
Django数据模型中on_delete使用详解
Nov 30 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学习资料汇总与网址
2007/03/16 PHP
浅析PHP中的UNICODE 编码与解码
2013/06/29 PHP
PHP生成随机字符串(3种方法)
2015/09/25 PHP
php+ajax制作无刷新留言板
2015/10/27 PHP
必须收藏的23个php实用代码片段
2016/02/02 PHP
php实现将数据做成json的格式给前端使用
2018/08/21 PHP
JavaScript延迟加载
2021/03/09 Javascript
网页开发中的容易忽略的问题 javascript HTML中的table
2009/04/15 Javascript
TextArea 控件的最大长度问题(js json)
2009/12/16 Javascript
JQuery 文本框回车跳到下一个文本框示例代码
2013/08/30 Javascript
js(jQuery)获取时间的方法及常用时间类搜集
2013/10/23 Javascript
js阻止冒泡及jquery阻止事件冒泡示例介绍
2013/11/19 Javascript
JavaScript中双叹号!!作用示例介绍
2014/09/21 Javascript
jQuery实现鼠标悬停显示提示信息窗口的方法
2015/04/30 Javascript
javascript正则表达式定义(语法)总结
2016/01/08 Javascript
Bootstrap树形组件jqTree的简单封装
2016/01/25 Javascript
jquery实现简单Tab切换菜单效果
2020/07/17 Javascript
mui上拉加载功能实例详解
2017/04/13 Javascript
zTree 树插件实现全国五级地区点击后加载的示例
2018/02/05 Javascript
JS伪继承prototype实现方法示例
2018/06/20 Javascript
vue 基于element-ui 分页组件封装的实例代码
2018/12/10 Javascript
Vuex,iView UI面包屑导航使用扩展详解
2019/11/04 Javascript
python生成词云的实现方法(推荐)
2017/06/13 Python
python3.4控制用户输入与输出的方法
2018/10/17 Python
详解python实现数据归一化处理的方式:(0,1)标准化
2019/07/17 Python
Python Django模板之模板过滤器与自定义模板过滤器示例
2019/10/18 Python
Python大数据之从网页上爬取数据的方法详解
2019/11/16 Python
迪拜航空官方网站:flydubai
2017/04/20 全球购物
介绍一下grep命令的使用
2012/06/28 面试题
环境工程大学生自荐信
2013/10/21 职场文书
大学生上课迟到检讨书
2014/10/15 职场文书
2014年审计人员工作总结
2014/12/19 职场文书
党风廉正建设责任书
2015/01/29 职场文书
导游词之千岛湖
2019/09/23 职场文书
详解盒子端CSS动画性能提升
2021/05/24 HTML / CSS
golang三种设计模式之简单工厂、方法工厂和抽象工厂
2022/04/10 Golang