Django自定义用户模型与Admin后台字段配置详解
本文详细介绍如何在Django中通过继承AbstractUser创建自定义用户模型,并在settings中配置AUTH_USER_MODEL。涵盖Model定义、数据库迁移、Admin后台注册及字段显示优化,包括使用__str__方法和list_display扩展后台展示内容,帮助开发者灵活管理用户数据。
Django自定义用户模型配置与实现
在Django项目中引入自定义用户表时,需特别注意相关配置事项。
务必在项目的settings配置文件中明确指定AUTH_USER_MODEL字段,以确保框架正确加载自定义用户模型。
# 覆盖默认的用户模型,使用自定义用户模型
# 语 法:'app的名称.自定义用户模型的名称'
AUTH_USER_MODEL = 'admi.UserModel'
接下来,在对应的models.py文件中编写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
完成模型定义后,需在当前应用目录下的admin.py文件中将该模型进行注册,以便在后台管理系统中可见。
# 只要使用admin后台系统,所有的Model必须在这里进行注册
admin.site.register(UserModel)
完成上述代码编写后,进入测试阶段。
执行makemigrations和migrate命令,将模型变更同步至数据库。

随后打开数据库管理工具,可以观察到user_table表已成功生成,且表中包含了我们定义的两个扩展字段。
这两个字段分别为nick_name(昵称)和user_address(用户地址)。

接下来,进入Admin后台界面进行功能测试。
首先使用createsuperuser命令创建一个超级用户账号。

通过Admin登录后台管理系统。

后台默认生成一个代表用户名的字段,若希望优化显示,可将UserModel中Meta类下的verbose_name修改为“用户名”,刷新Admin页面后,后台显示的字段标签会随之更新。
这种修改无需重新更新数据库结构,操作十分便捷。

Admin后台字段显示优化
此外,还可以对后台字段进行进一步扩展优化。
首先调整用户名在后台的显示内容,避免仅显示默认的“admin”显得单调。
在UserModel类中实现__str__魔法方法,以自定义字符串表示形式。

具体实现效果如下所示。

其次,让后台信息列表展示更多字段,提升管理效率。
# 修改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后台字段配置的实例分享完毕,希望能为读者提供有价值的参考,欢迎继续支持本站获取更多技术内容。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









