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中使用OpenCV进行人脸检测的例子
Apr 18 Python
Python中正则表达式的用法实例汇总
Aug 18 Python
python正则表达式之作业计算器
Mar 18 Python
Python 实现文件的全备份和差异备份详解
Dec 27 Python
pycharm安装图文教程
May 02 Python
详解Python在七牛云平台的应用(一)
Dec 05 Python
python去除扩展名的实例讲解
Apr 23 Python
python将回车作为输入内容的实例
Jun 23 Python
tensorflow saver 保存和恢复指定 tensor的实例讲解
Jul 26 Python
Python 实现文件打包、上传与校验的方法
Feb 13 Python
python多线程+代理池爬取天天基金网、股票数据过程解析
Aug 13 Python
tensorflow2.0教程之Keras快速入门
Feb 20 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数据库操作方法(MYSQL版)
2011/06/08 PHP
深入php数据采集的详解
2013/06/02 PHP
深入理解PHP之源码目录结构与功能说明
2016/06/01 PHP
laravel获取不到session的三种解决办法【推荐】
2018/09/16 PHP
php中钩子(hook)的原理与简单应用demo示例
2019/09/03 PHP
JavaScript Math.floor方法(对数值向下取整)
2015/01/09 Javascript
JS长整型精度问题实例分析
2015/01/13 Javascript
jquery实现从数组移除指定的值
2015/06/24 Javascript
jquery.cookie.js用法实例详解
2015/12/25 Javascript
javascript创建对象、对象继承的实用方式详解
2016/03/08 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
详解前端构建工具gulpjs的使用介绍及技巧
2017/01/19 Javascript
js中的面向对象入门
2017/03/06 Javascript
Angularjs处理页面闪烁的解决方法
2017/03/09 Javascript
vue事件修饰符和按键修饰符用法总结
2017/07/25 Javascript
Nodejs 和Session 原理及实战技巧小结
2017/08/25 NodeJs
element上传组件循环引用及简单时间倒计时的实现
2018/10/01 Javascript
Vue+Element实现表格编辑、删除、以及新增行的最优方法
2019/05/28 Javascript
JavaScript 事件代理需要注意的地方
2020/09/08 Javascript
Python常用小技巧总结
2015/06/01 Python
Python+OpenCV让电脑帮你玩微信跳一跳
2018/01/04 Python
Python内置模块logging用法实例分析
2018/02/12 Python
如何用python整理附件
2018/05/13 Python
Django项目中用JS实现加载子页面并传值的方法
2018/05/28 Python
Python中利用aiohttp制作异步爬虫及简单应用
2018/11/29 Python
浅谈Python反射 & 单例模式
2019/03/21 Python
金蝶的一道SQL笔试题
2012/12/18 面试题
财务会计毕业生自荐信
2013/11/02 职场文书
销售工作岗位职责
2013/12/24 职场文书
《争吵》教学反思
2014/02/15 职场文书
网络信息安全承诺书
2014/03/26 职场文书
专科生就业求职信
2014/06/22 职场文书
2015年信息宣传工作总结
2015/05/26 职场文书
2016年校园重阳节广播稿
2015/12/18 职场文书
SQLServer中JSON文档型数据的查询问题解决
2021/06/27 SQL Server
webpack的移动端适配方案小结
2021/07/25 Javascript