Django自定义用户模型与Admin后台字段配置详解

晚来风
晚来风
发布时间:2026-10-13| 6人浏览过
原创

本文详细介绍如何在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后台字段配置的实例分享完毕,希望能为读者提供有价值的参考,欢迎继续支持本站获取更多技术内容。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。