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复制目录结构脚本代码分享
Mar 06 Python
python使用smtplib模块通过gmail实现邮件发送的方法
May 08 Python
python处理xml文件的方法小结
May 02 Python
Python绘制正余弦函数图像的方法
Aug 28 Python
python scp 批量同步文件的实现方法
Jan 03 Python
基于Python打造账号共享浏览器功能
May 30 Python
Python中的正则表达式与JSON数据交换格式
Jul 03 Python
详解一种用django_cache实现分布式锁的方式
Sep 01 Python
使用Python防止SQL注入攻击的实现示例
May 21 Python
如何实现一个python函数装饰器(Decorator)
Oct 12 Python
Python环境配置实现pip加速过程解析
Nov 27 Python
python 用opencv实现图像修复和图像金字塔
Nov 27 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新手上路(十二)
2006/10/09 PHP
phpMyAdmin2.11.6安装配置方法
2008/08/24 PHP
php 正确解码javascript中通过escape编码后的字符
2010/01/28 PHP
用php简单实现加减乘除计算器
2014/01/06 PHP
php用户注册时常用的检验函数实例总结
2014/12/22 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
js 第二代身份证号码的验证机制代码
2011/05/12 Javascript
详解JavaScript函数绑定
2013/08/18 Javascript
iframe父页面获取子页面参数的方法
2014/02/21 Javascript
JavaScript中Number.NEGATIVE_INFINITY值的使用详解
2015/06/05 Javascript
JavaScript声明变量名的语法规则
2015/07/10 Javascript
js图片轮播效果实现代码
2020/04/18 Javascript
Angular 路由route实例代码
2016/07/12 Javascript
关于input全选反选恶心的异常情况
2016/07/24 Javascript
详解Vue webapp项目通过HBulider打包原生APP
2018/06/29 Javascript
Nodejs异步流程框架async的方法
2019/06/07 NodeJs
[01:02:54]完美世界DOTA2联赛PWL S2 FTD vs GXR 第一场 11.22
2020/11/26 DOTA
python实现文本文件合并
2015/12/29 Python
python分布式环境下的限流器的示例
2017/10/26 Python
python实现微信远程控制电脑
2018/02/22 Python
Python父目录、子目录的相互调用方法
2019/02/16 Python
Python学习笔记之变量、自定义函数用法示例
2019/05/28 Python
Python 使用list和tuple+条件判断详解
2019/07/30 Python
python 函数的缺省参数使用注意事项分析
2019/09/17 Python
python实现图片二值化及灰度处理方式
2019/12/07 Python
python解析多层json操作示例
2019/12/30 Python
Python 如何创建一个简单的REST接口
2020/07/30 Python
PyQt5 QDockWidget控件应用详解
2020/08/12 Python
python爬虫scrapy基本使用超详细教程
2021/02/20 Python
CSS3的一个简单导航栏实现
2015/08/03 HTML / CSS
美国宠物护理专家:Revival Animal Health
2020/01/05 全球购物
大学生见习报告总结
2014/11/04 职场文书
群众路线教育实践活动学习笔记内容
2014/11/06 职场文书
房产公证书样本
2015/01/23 职场文书
导游词之塘栖古镇
2019/12/04 职场文书
PyQt5结合QtDesigner实现文本框读写操作
2021/06/11 Python