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中splitlines()方法的使用简介
May 20 Python
Python中模块string.py详解
Mar 12 Python
Python 专题一 函数的基础知识
Mar 16 Python
Python读取txt内容写入xls格式excel中的方法
Oct 11 Python
带你认识Django
Jan 15 Python
简单了解python单例模式的几种写法
Jul 01 Python
基于pandas中expand的作用详解
Dec 17 Python
python数据预处理 :数据抽样解析
Feb 24 Python
pytorch之Resize()函数具体使用详解
Feb 27 Python
解决python运行效率不高的问题
Jul 20 Python
Python 添加文件注释和函数注释操作
Aug 09 Python
运行python提示no module named sklearn的解决方法
Nov 29 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应用JSON技巧讲解
2013/02/03 PHP
php实现获取文件mime类型的方法
2015/02/11 PHP
Laravel框架运行出错提示RuntimeException No application encryption key has been specified.解决方法
2019/04/02 PHP
基于jquery自定义图片热区效果
2012/07/21 Javascript
微信中一些常用的js方法汇总
2015/03/12 Javascript
JS实现从表格中动态删除指定行的方法
2015/03/31 Javascript
js+html5实现canvas绘制简单矩形的方法
2015/06/05 Javascript
ajax如何实现页面局部跳转与结果返回
2015/08/24 Javascript
实例详解jQuery Mockjax 插件模拟 Ajax 请求
2016/01/12 Javascript
JS DOM实现鼠标滑动图片效果
2020/09/17 Javascript
vue-cli如何快速构建vue项目
2017/04/26 Javascript
Vue 2.0中生命周期与钩子函数的一些理解
2017/05/09 Javascript
JavaScript适配器模式详解
2017/10/19 Javascript
基于jQuery实现定位导航位置效果
2017/11/15 jQuery
React key值的作用和使用详解
2018/08/23 Javascript
vue-better-scroll 的使用实例代码详解
2018/12/03 Javascript
Vue+Openlayers自定义轨迹动画
2020/09/24 Javascript
[00:32]2018DOTA2亚洲邀请赛出场——VP
2018/04/04 DOTA
python实现RSA加密(解密)算法
2016/02/17 Python
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
2016/06/03 Python
python一键升级所有pip package的方法
2017/01/16 Python
Python 在字符串中加入变量的实例讲解
2018/05/02 Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
2018/09/27 Python
浅析Python 3 字符串中的 STR 和 Bytes 有什么区别
2018/10/14 Python
在Python中os.fork()产生子进程的例子
2019/08/08 Python
Scrapy框架基本命令与settings.py设置
2020/02/06 Python
将 Ubuntu 16 和 18 上的 python 升级到最新 python3.8 的方法教程
2020/03/11 Python
草莓网英国官网:Strawberrynet UK
2017/02/12 全球购物
大学本科毕业生求职简历的自我评价
2013/10/09 职场文书
经理任命书模板
2014/06/06 职场文书
个人工作表现自我评价
2015/03/06 职场文书
2015年加油站站长工作总结
2015/05/27 职场文书
企业法人代表证明书
2015/06/18 职场文书
你对自己的信用报告有过了解吗?
2019/07/09 职场文书
Django中session进行权限管理的使用
2021/07/09 Python
MySQL的存储过程和相关函数
2022/04/26 MySQL