Django自定义用户表+自定义admin后台中的字段实例


Posted in Python onNovember 18, 2019

1.自定义用户表 注意事项

必须在settings中配置AUTH_USER_MODEL这个字段

# 覆盖默认的用户模型,使用自定义用户模型
  # 语 法:'app的名称.自定义用户模型的名称'
  AUTH_USER_MODEL = 'admi.UserModel'

2.在models文件中编写UserModel类

from django.db import models
from django.contrib.auth.models import AbstractUser
# Django框架将createsuperuser创建的用户以及在amdin后台添加的用户,默认都保存在了auth_user这个表中,但是这个表的字段是固定的,如果想给用户扩展一些字段(年龄、性别、住址等),就需要重写User表了,不能再使用auth_user这个表了。

class UserModel(AbstractUser):
    # AbstractUser这个类,也就是Django框架默认使用的一个用于管理用户的User类,这个类生成一个auth_user表。所以,要扩展用户属性,可以继承AbstractUser,在子类UserModel中实现扩展。  
    nick_name=models.CharField(max_length=25,verbose_name='昵称')
    user_address=models.CharField(max_length=35,verbose_name='住址')

    class Meta:
     # 配置自定义用户表名是user_table
      db_table='user_table'
      verbose_name='用户'
      verbose_name_plural=verbose_name

添加完成后,在当前app的admin文件中注册

# 只要使用admin后台系统,所有的Model必须在这里进行注册
admin.site.register(UserModel)

3.测试

编写完上述步骤后,makemigrations、migrate同步数据库

Django自定义用户表+自定义admin后台中的字段实例

然后打开用户的数据库管理工具,可以看到user_table这个表已经生成了,而且表中生成了我们创建的两个字段

nick_name和user_address

Django自定义用户表+自定义admin后台中的字段实例

4.进入admin后台测试

先使用createsuper创建一个superuser用户

Django自定义用户表+自定义admin后台中的字段实例

通过admin登录到后台

Django自定义用户表+自定义admin后台中的字段实例

后台自动生成了一个字段代表用户名,我们把UserModel中Meat下verbose_name=‘用户' 修改成用户名,然后刷新admin页面,admin中的字段也会随之改变。

(这样也不需要更新数据库,是不是很方便呢?)

Django自定义用户表+自定义admin后台中的字段实例

5.后台字段扩展

a.更改用户名显示的内容(只显示admin是不是很单调?)

在UserModel中使用__str__魔法方法

Django自定义用户表+自定义admin后台中的字段实例

具体效果

Django自定义用户表+自定义admin后台中的字段实例

b.让后台信息显示多个字段

# 修改app下的admin.py文件
  from django.contrib import admin
  from .models import *
  class UserAdmin(admin.ModelAdmin):
    # 设置显示数据库中哪些字段
    list_display = ['username','password','nick_name','user_address']
    
  admin.site.register(UserModel,UserAdmin)

效果

Django自定义用户表+自定义admin后台中的字段实例

以上这篇Django自定义用户表+自定义admin后台中的字段实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python用GET方法上传文件
Mar 10 Python
剖析Django中模版标签的解析与参数传递
Jul 21 Python
教大家使用Python SqlAlchemy
Feb 12 Python
Python中使用支持向量机SVM实践
Dec 27 Python
Python闭包和装饰器用法实例详解
May 22 Python
Pandas删除数据的几种情况(小结)
Jun 21 Python
pandas通过字典生成dataframe的方法步骤
Jul 23 Python
Python爬虫:将headers请求头字符串转为字典的方法
Aug 21 Python
Python绘制二维曲线的日常应用详解
Dec 04 Python
python爬虫实例之获取动漫截图
May 31 Python
Python configparser模块操作代码实例
Jun 08 Python
浅谈Python中的字符串
Jun 10 Python
Django 实现Admin自动填充当前用户的示例代码
Nov 18 #Python
Django 创建后台,配置sqlite3教程
Nov 18 #Python
Python3实现配置文件差异对比脚本
Nov 18 #Python
Python(PyS60)实现简单语音整点报时
Nov 18 #Python
wxPython实现整点报时
Nov 18 #Python
python字符串的拼接方法总结
Nov 18 #Python
python将字符串转变成dict格式的实现
Nov 18 #Python
You might like
php中截取字符串支持utf-8
2007/01/18 PHP
PHP计数器的实现代码
2013/06/08 PHP
解析php函数method_exists()与is_callable()的区别
2013/06/21 PHP
php smarty模板引擎的6个小技巧
2014/04/24 PHP
php解压缩zip和rar压缩包文件的方法
2019/07/10 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
ExtJs 3.1 XmlTreeLoader Example Error
2010/02/09 Javascript
Dojo 学习要点
2010/09/03 Javascript
jquery实现奇偶行赋值不同css值
2012/02/17 Javascript
node.js 一个简单的页面输出实现代码
2012/03/07 Javascript
javaScript 动态访问JSon元素示例代码
2013/08/30 Javascript
js 左右悬浮对联广告代码示例
2014/12/12 Javascript
node.js中的fs.futimes方法使用说明
2014/12/17 Javascript
angularJS 中$attrs方法使用指南
2015/02/09 Javascript
javascript实现3D切换焦点图
2015/10/16 Javascript
JS原型链怎么理解
2016/06/27 Javascript
D3.js实现直方图的方法详解
2016/09/25 Javascript
简单实现Vue的observer和watcher
2016/12/21 Javascript
微信小程序开发图片拖拽实例详解
2017/05/05 Javascript
jquery单击文字或图片内容放大并居中显示
2017/06/23 jQuery
vue2.0+vue-dplayer实现hls播放的示例
2018/03/02 Javascript
详解Vue.js项目API、Router配置拆分实践
2018/03/16 Javascript
windows安装TensorFlow和Keras遇到的问题及其解决方法
2019/07/10 Python
Python笔记之观察者模式
2019/11/20 Python
python接口自动化之ConfigParser配置文件的使用详解
2020/08/03 Python
Python常用扩展插件使用教程解析
2020/11/02 Python
巴西婴儿用品商店:Bebe Store
2017/11/23 全球购物
澳大利亚当地最大的时装生产商:Cue
2018/08/06 全球购物
一年级小学生评语
2014/04/22 职场文书
爱心捐款倡议书范文
2014/05/12 职场文书
乡镇食品安全责任书
2014/07/28 职场文书
网吧管理制度范本
2015/08/05 职场文书
节水宣传标语口号
2015/12/26 职场文书
JavaScript 对象创建的3种方法
2021/11/17 Javascript
基于Redis zSet实现滑动窗口对短信进行防刷限流的问题
2022/02/12 Redis
SQL Server数据库查询出现阻塞之性能调优
2022/04/10 SQL Server