Django Admin 后台管理配置详解:从注册到自定义操作
本文详细介绍 Django Admin 后台管理系统的配置方法。内容涵盖如何将数据表注册到 admin.py、启动服务及访问后台界面。重点讲解如何通过定义 __str__ 方法优化列表显示,利用 list_display、fields 和 exclude 控制字段展示顺序与范围,以及通过自定义 ModelAdmin 实现批量更新等高级动作功能。
Django Admin 后台管理配置详解:从注册到自定义操作
简述
Django 框架内置的 admin 模块提供了功能强大的后台管理界面,允许开发者通过 Web 界面直接对数据库进行增删改查操作。要实现这一功能,核心步骤是修改 admin.py 文件,将需要管理的模型数据表注册到后台管理系统中。
创建数据表与模型定义
创建数据表
为了便于演示配置过程,我们在 models.py 中定义了一张名为 img 的数据表结构。

在模型定义中,verbo_name 属性用于指定在 admin 界面中显示该表字段的名称;而在 class Meta 中定义的 verbose_name 则用于指定在 admin 界面中显示的数据表名称。
注册模型到 admin.py
修改 admin.py 文件
from django.contrib import admin
from app1 import models
# Register your models here.
admin.site.register(models.img) #将表在admin中注册
启动服务与访问后台界面
完成模型定义和注册后,启动 Django 服务并进入管理界面。
python manage.py makemigrations #生成创建数据表py文件
python manage.py migrate #执行py文件,更新数据库
python manage.py runserver #启动服务
打开浏览器,访问地址 http://127.0.0.1:8000/admin 以进入后台登录页面。

输入之前设置的超级用户账号和密码,成功登录进入管理后台界面。

默认提供的功能仅支持对数据表进行简单的增、删、改、查操作。如果需要进行批量更新等复杂操作,则需要进一步定制相应的动作(Actions)。
自定义列表与编辑页面显示
自定义内容显示
当我们进入自己创建的表的管理界面时,默认情况下列表显示的内容是字符串 'object',这不利于识别具体数据。

为了解决这个问题,可以在 models.py 中对应的表类下定义 __str__ 方法,指定返回哪个字段作为对象的字符串表示。

配置后的效果如下所示,列表将显示更具可读性的内容。

默认情况下,列表只显示一个字段。我们可以通过在 ModelAdmin 类中定义 list_display 属性来修改列表中显示的字段:
from django.contrib import admin
from app1.models import img
# Register your models here.
class imgAdmin(admin.ModelAdmin):
list_display = ('title','summary','file')
admin.site.register(img,imgAdmin)

点击某条具体数据后,编辑页面将默认显示每个字段。这些字段是不属于 AutoField 且 editable=True 的字段,它们在单个字段集中的显示顺序与模型中定义的顺序一致。

我们可以通过定义 ModelAdmin 中的 fields 或 exclude 属性来修改编辑页面显示的字段:
class imgAdmin(admin.ModelAdmin):
list_display = ('title','summary','file')
fields = ('title',)

需要注意的是,exclude 的作用与 fields 相反,它用于指定哪些字段不显示在编辑页面中。
自定义批量操作动作
自定义动作
Django Admin 默认提供的动作仅包含“删除所选项目”一项。

我们可以通过继承 ModelAdmin 类来自定义动作函数,并将其绑定到 actions 列表中,从而实现如批量状态更新等功能。
def change_up(modeladmin, request, queryset): #定义动作
queryset.update(stat='1')
change_up.short_description = "up" #重写动作显示名称
def change_down(modeladmin, request, queryset):
queryset.update(stat='0')
change_down.short_description = "down"
class imgAdmin(admin.ModelAdmin):
list_display = ('title','summary','file','stat')
fields = ('title',)
actions = [change_up,change_down] #绑定动作

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













