Django自定义用户表+自定义admin后台中的字段实例
作者:小凤九 发布时间:2022-05-27 08:16:01
标签:Django,自定义,用户表,admin,字段
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同步数据库
然后打开用户的数据库管理工具,可以看到user_table这个表已经生成了,而且表中生成了我们创建的两个字段
nick_name和user_address
4.进入admin后台测试
先使用createsuper创建一个superuser用户
通过admin登录到后台
后台自动生成了一个字段代表用户名,我们把UserModel中Meat下verbose_name=‘用户' 修改成用户名,然后刷新admin页面,admin中的字段也会随之改变。
(这样也不需要更新数据库,是不是很方便呢?)
5.后台字段扩展
a.更改用户名显示的内容(只显示admin是不是很单调?)
在UserModel中使用__str__魔法方法
具体效果
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)
效果
来源:https://blog.csdn.net/qq_40655579/article/details/83903004
0
投稿
猜你喜欢
- 今天来说说编程语言中的动态类型语言与鸭子类型。动态语言 * 对动态语言的定义:动态编程语言是一类在运行时可以改变其结构的语言:例如新的函数
- 下面方法可以用来快速生成一批数据 if(object_id('t') is not null) drop table t g
- 查看隐藏参数SELECT x.ksppinm name,y.ksppstvl value,y.ksppstdf isdefault,deco
- 关于js中的offsetWidth、clientWidth、scrollWidth等一系列属性及其方法一直都傻傻分不清,这里就来总结一下这些
- 目录一、安装Py2neo二、连接Neo4j数据库1. 使用graph.run执行Cypher语句创建节点2. 使用Node数据结构创建节点3
- 目录一、 什么是自定义指令二、 如何自定义指令钩子函数三、应用场景输入框防抖图片懒加载一键 Copy的功能拖拽总结一、 什么是自定义指令我们
- 一、函数介绍pytorch中两个张量的乘法可以分为两种:两个张量对应元素相乘,在PyTorch中可以通过torch.mul函数(或*运算符)
- 本文实例为大家分享了Python版名片管理系统的具体代码,供大家参考,具体内容如下先建立cards_main的文件import cards_
- 在网上查找删除重复数据保留id最小的数据,方法如下:DELETEFROM peopleWHERE peopleNam
- 概述Vue 在插入、更新或者移除 DOM 时,提供多种不同方式的应用过渡效果。包括以下工具:在 CSS 过渡和动画中自动应用 class可以
- 本文实例汇总了Python中关于列表的常用操作方法,供大家参考借鉴。具体方法如下:一、Python创建列表:sample_list = [&
- JavaScript中对象的property有三个属性:1.writable。该property是否可写。2.enumerable。当使用f
- 怎么用javascript进行拖拽本文译自:http://www.webreference.com/programming/javascri
- 本文为大家分享了js实现简单选项卡功能的具体代码,供大家参考,具体内容如下首先我们来写HTML代码,构建出整体结构代码如下:<!--导
- 在网页制作中,表单中的对象总是给人一种单调与沉闷的感觉,比如说按钮、文本框等,它们一成不变的模样与颜色
- Python列表和字典前面我们了解了 “大O表示法” 以及对不同的算法的评估,下面来讨论下 Python 两种内置数据类型有关的各种操作的大
- 对于三目运算符(ternary operator),python可以用conditional expressions来替代如对于x<5
- 1、修改本地化时间原理: 本地化时间格式化需要gettext支持, 假如你的环境没有开启此功能, 将会返回乱码, 影响#phpmyadmin
- 误区 #16:多个关于数据的损坏和修复误区 坊间流传的很多版本都不正确 我已经听过很多关于数据修复可以做什么、不可以做什么、什么会导致数据损
- 类似Java打包操作,若不想让人看到Python程序内部逻辑,也可将其转换为exe可执行文件首先自己写一个Python程序,如下:print