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

作者:小凤九 时间:2022-05-27 08:16:01 

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后台中的字段实例

来源:https://blog.csdn.net/qq_40655579/article/details/83903004

标签:Django,自定义,用户表,admin,字段
0
投稿

猜你喜欢

  • asp下查询xml的实现代码

    2011-04-19 10:37:00
  • Sql语句优化注意

    2009-10-31 13:15:00
  • python和c语言哪个更适合初学者

    2022-06-22 08:23:29
  • Python基于socket模块实现UDP通信功能示例

    2023-08-25 06:45:27
  • ie的javascript失效问题

    2009-09-21 12:49:00
  • 对Python3中bytes和HexStr之间的转换详解

    2022-12-10 22:15:36
  • python如何通过psutil获取服务器cpu、内存、磁盘使用率

    2022-11-07 01:01:29
  • Android ProgressBar进度条和ProgressDialog进度框的展示DEMO

    2023-11-20 01:15:43
  • Linux下C连接MySQL出现错误解决一例

    2008-12-29 13:17:00
  • Js中的函数直接量

    2007-12-21 19:15:00
  • 如何将Python列表转换为字符串

    2023-11-02 12:54:27
  • 设计模式-自动完成

    2010-11-30 21:44:00
  • python密码学RSA密码加密教程

    2023-08-03 17:09:10
  • 用Dreamweaver实现飘浮光球特效

    2008-03-03 12:28:00
  • Python延时操作实现方法示例

    2023-08-25 04:04:50
  • asp如何显示最后十名来访者信息?

    2010-06-09 18:45:00
  • sp_delete_backuphistory

    2008-06-07 13:59:00
  • php+mysqli使用面向对象方式更新数据库实例

    2023-06-23 00:30:23
  • 对用户进行电话访谈的一点感想

    2009-12-28 13:05:00
  • 怎么样才能抓住用户?

    2008-10-20 12:10:00
  • asp之家 网络编程 m.aspxhome.com