Django Admin 后台管理定制:优化字段显示与自定义用户模型

拾光
拾光
发布时间:2026-10-13| 3人浏览过
原创

本文详解如何在 Django Admin 中定制字段显示,解决默认显示 object 的问题。通过配置 list_display 和 __str__ 方法提升可读性,并介绍如何继承 AbstractUser 创建自定义用户表,配置 AUTH_USER_MODEL 及生成超级用户,实现更灵活的数据库管理。

Django Admin 字段显示优化

首先明确需求:

Django 框架内置了强大的 admin 后台管理功能,通常只需将自定义的 models 注册到 admin 中即可启用。

然而,若仅进行简单注册,后台列表页的展示会非常简陋。默认情况下,每一行记录仅以 'model object' 的形式呈现,无法直接查看具体描述信息,必须点击进入详情页才能获知内容,这种交互方式极不便捷,效果可参考下图:

实现关键信息的直观展示。

优化后的效果如下图所示,界面清晰度和用户体验显著提升。

具体配置步骤如下。

只需在 admin.py 文件中进行相应配置即可实现。

admin.py 配置示例

admin.py 配置示例


# Underwriter admin model
class UnderwriterAdmin(admin.ModelAdmin):
  # 需要显示的字段信息
  list_display = ('id', 'underwriter', 'shortname', 'telephone')

  # 设置哪些字段可以点击进入编辑界面,默认是第一个字段
  list_display_links = ('id', 'underwriter')

# 注册时,在第二个参数写上 admin model
admin.site.register(Underwriter, UnderwriterAdmin)

常见问题解答。

为什么在未进行特殊设置时,后台显示的是 'model object' 形式?

这通常是因为在定义 Model 类时,遗漏了关键的一步:


# 承销商 model
class Underwriter(models.Model):
  underwriter = models.CharField(max_length=50)
  shortname = models.CharField(max_length=50)
  telephone = models.CharField(max_length=50)
  email = models.CharField(max_length=50, null=True, blank=True)

  # 应该加上这步,表示显示时返回的是自定义信息,而不是 object 形式
  def __unicode__(self):       # __str__ on Python 3
    return self.underwriter

自定义用户模型与数据库管理

补充知识:Django 中自定义用户模型及使用 Admin 管理数据库。

Django 自定义用户表详解。

在使用 Django 操作数据库时,系统默认生成的 User 表字段通常能满足日常基本需求。但在某些场景下,我们需要扩展更多字段,此时可以通过自定义用户表来替换 Django 自带的 User 表,以满足特定业务需求。

自定义用户表定义


from django.db import models
from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
  phone = models.CharField(max_length=11, null=True, blank=True)
  nickname = models.CharField(max_length=50, null=True, blank=True)
  img = models.ImageField(upload_to="upload/", default="static/upload/a.jpg", max_length=100)
  # upload_to 图像上传地址
  class Meta:
    db_table = "user"
   verbose_name = '用户'
    verbose_name_plural = verbose_name

注意:自定义的 User 类必须继承 AbstractUser。

接下来,在 settings.py 配置文件中添加以下设置:

AUTH_USER_MODEL = 'app名.类名'

随后,在命令行中执行相关命令以生成新的用户表结构。

在 Model 的 Meta 类中设置 db_table = 'user',即可自定义数据库表名为 user。

Django 使用 Admin 管理数据库内容。

Django 提供了便捷的内置 admin 功能,便于网站管理。首先,需要运行 python manage.py createsuperuser 命令来创建一个管理员账户。

创建过程中,需依次输入用户名、邮箱地址及密码等必要信息。

在 admin.py 文件中注册相应的模型。

模型注册与后台访问


from django.contrib import admin
#引入要注册的模型
from music.models import Music
from music.models import Banner
from user.models import User
# Register your models here.注册
admin.site.register(Music)
admin.site.register(Banner)
admin.site.register(User)

使用浏览器访问 http://127.0.0.1:8000/admin/,并输入刚才注册的管理员账户和密码登录。

登录后,即可对数据库表进行基础的增删改查操作。

若要设置模型在 Admin 界面显示的中文名称,需在 models.py 的类中添加 Meta 配置。


class Meta:
 # 设置模型的名字,但是记得复数形式也要设置,否则有些地方就变成 verbose_name + s 了
 verbose_name = '用户'
  verbose_name_plural = verbose_name

保存后刷新 Admin 界面即可看到更改。

以上关于 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 算法库。