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实现的石头剪子布代码分享
Aug 22 Python
python中django框架通过正则搜索页面上email地址的方法
Mar 21 Python
Python基于pygame实现的弹力球效果(附源码)
Nov 11 Python
Python基于列表模拟堆栈和队列功能示例
Jan 05 Python
Python DataFrame 设置输出不显示index(索引)值的方法
Jun 07 Python
详解如何在Apache中运行Python WSGI应用
Jan 02 Python
Python3按一定数据位数格式处理bin文件的方法
Jan 24 Python
Python脚本按照当前日期创建多级目录
Mar 01 Python
python简单验证码识别的实现方法
May 10 Python
python pyinstaller 加载ui路径方法
Jun 10 Python
Anaconda之conda常用命令介绍(安装、更新、删除)
Oct 06 Python
python 浮点数四舍五入需要注意的地方
Aug 18 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中去除换行解决办法小结(PHP_EOL)
2011/11/27 PHP
PHP解决URL中文GBK乱码问题的两种方法
2014/06/03 PHP
PHP实现获取图片颜色值的方法
2014/07/11 PHP
PHP处理Ajax请求与Ajax跨域问题
2017/02/13 PHP
Javascript 错误处理的几种方法
2009/06/13 Javascript
Javascript实现仿WebQQ界面的“浮云”兼容 IE7以上版本及FF
2011/04/27 Javascript
最常用的12种设计模式小结
2011/08/09 Javascript
使用ajaxfileupload.js实现ajax上传文件php版
2014/06/26 Javascript
javascript中mouseover、mouseout使用详解
2015/07/19 Javascript
JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
2015/12/02 Javascript
jquery对象和DOM对象的任意相互转换
2016/02/21 Javascript
JavaScript驾驭网页-CSS与DOM
2016/03/24 Javascript
jQuery简单获取DIV和A标签元素位置的方法
2017/02/07 Javascript
详解Vue 事件驱动和依赖追踪
2017/04/22 Javascript
jquery-file-upload 文件上传带进度条效果
2017/11/21 jQuery
Node层模拟实现multipart表单的文件上传示例
2018/01/02 Javascript
JavaScript对象拷贝与Object.assign用法实例分析
2018/06/20 Javascript
通过vue-cli3构建一个SSR应用程序的方法
2018/09/13 Javascript
python 实现文件的递归拷贝实现代码
2012/08/02 Python
zookeeper python接口实例详解
2018/01/18 Python
Python3随机漫步生成数据并绘制
2018/08/27 Python
详解Python传入参数的几种方法
2019/05/16 Python
python反编译学习之字节码详解
2019/05/19 Python
使用Python将语音转换为文本的方法
2020/08/10 Python
Python爬虫回测股票的实例讲解
2021/01/22 Python
介绍一下EJB的分类及其各自的功能及应用
2016/08/23 面试题
材料物理专业大学毕业生求职信
2013/10/15 职场文书
大学本科生的个人自我评价
2013/12/09 职场文书
绩效工资分配方案
2014/01/18 职场文书
效能监察建议书
2014/05/19 职场文书
迎国庆演讲稿
2014/09/15 职场文书
学雷锋感言
2015/08/03 职场文书
医生行业员工的辞职信
2019/06/24 职场文书
中国现代文学之经典散文三篇
2019/09/18 职场文书
2019年图书室自查报告范本
2019/10/12 职场文书
详解TypeScript中的类型保护
2021/04/29 Javascript