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实现的最近最少使用算法
Jul 10 Python
Python3 伪装浏览器的方法示例
Nov 23 Python
python 处理dataframe中的时间字段方法
Apr 10 Python
解决Tensorflow安装成功,但在导入时报错的问题
Jun 13 Python
使用Python实现图像标记点的坐标输出功能
Aug 14 Python
使用虚拟环境打包python为exe 文件的方法
Aug 29 Python
python异步Web框架sanic的实现
Apr 27 Python
python中如何写类
Jun 29 Python
PyTorch: Softmax多分类实战操作
Jul 07 Python
Python爬虫设置Cookie解决网站拦截并爬取蚂蚁短租的问题
Feb 22 Python
解决Pytorch修改预训练模型时遇到key不匹配的情况
Jun 05 Python
Python 正则模块详情
Nov 02 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
判“新”函数:得到今天与明天的秒数
2006/10/09 PHP
用header 发送cookie的php代码
2007/03/16 PHP
php实现的短网址算法分享
2014/06/20 PHP
php中socket通信机制实例详解
2015/01/03 PHP
PHP扩展程序实现守护进程
2015/04/16 PHP
详解PHP素材图片上传、下载功能
2019/04/12 PHP
jQuery 选择器、DOM操作、事件、动画
2010/11/25 Javascript
ASP.NET MVC中EasyUI的datagrid跨域调用实现代码
2012/03/14 Javascript
js获取checkbox复选框选中的选项实例
2014/08/24 Javascript
node.js中的http.request.end方法使用说明
2014/12/10 Javascript
jQuery实现切换页面过渡动画效果
2015/10/29 Javascript
jQuery遍历json的方法分析
2016/04/16 Javascript
JavaScript计算值然后把值嵌入到html中的实现方法
2016/10/29 Javascript
jQuery实现滚动条滚动到子元素位置(方便定位)
2017/01/08 Javascript
关于vuex的学习实践笔记
2017/04/05 Javascript
vue中keep-alive的用法及问题描述
2018/05/15 Javascript
解决mpvue + vuex 开发微信小程序vuex辅助函数mapState、mapGetters不可用问题
2018/08/03 Javascript
JS实现的Object数组去重功能示例【数组成员为Object对象】
2019/02/01 Javascript
JS实现秒杀倒计时特效
2020/01/02 Javascript
[28:05]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第一场 10月30日
2020/10/31 DOTA
Python中import机制详解
2017/11/14 Python
python实现大文件分割与合并
2019/07/22 Python
如何将 awk 脚本移植到 Python
2019/12/09 Python
Python打印特殊符号及对应编码解析
2020/05/07 Python
Python常用GUI框架原理解析汇总
2020/12/07 Python
CSS3制作苹果风格键盘特效
2015/02/26 HTML / CSS
欧洲最大的品牌水上运动服装和设备在线零售商:Wuituit Outlet
2018/05/05 全球购物
初三开学计划书
2014/04/27 职场文书
小学语文复习计划
2015/01/19 职场文书
2015年城市管理工作总结
2015/05/23 职场文书
开场白怎么写
2015/06/01 职场文书
跳高加油稿
2015/07/21 职场文书
2016参观监狱警示教育活动心得体会
2016/01/15 职场文书
vue首次渲染全过程
2021/04/21 Vue.js
Python趣味爬虫之用Python实现智慧校园一键评教
2021/05/28 Python
面试分析分布式架构Redis热点key大Value解决方案
2022/03/13 Redis