千家信息网

如何使用django2.0来开发ModelAdmin模型管理

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,小编给大家分享一下如何使用django2.0来开发ModelAdmin模型管理,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧
千家信息网最后更新 2026年11月01日如何使用django2.0来开发ModelAdmin模型管理

小编给大家分享一下如何使用django2.0来开发ModelAdmin模型管理,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

运行开发服务器

> cd cms> python manager.py runserver

打开浏览器http://127.0.0.1:8000/admin
就可以看到后台的登录窗口

创建超级管理员

因为我们还没有后台的超级管理员, 先用命令行创建一个

> cd cms> python manager.py createsuperuser

按照提示输入Username, Password即可, 在浏览器中输入账号密码就可以登录到后台了

将Account模块注册到后台中

登录成功后发现没有我们的Account模块, 现在我们就来把Account模块注册到后台中

# account/admin.pyfrom django.contrib import adminfrom .models import Accountadmin.site.register(Account)

然后再刷新浏览器, 就会发现出现了Account模块, 但是显示的界面全都是英文的

另外还有一种装饰器的注册方式

# account/admin.pyfrom django.contrib import adminfrom .models import Account@admin.register(Account)class AccountAdmin(admin.ModelAdmin):    pass

也会实现同样的效果

将django中文化

django当然替我们想到了这一点

# cms/settings.py# 指定语言为中文LANGUAGE_CODE = 'zh-Hans'# 指定时区TIME_ZONE = 'PRC'# 改为False, 存入数据库的时间才正常, 否则会比正常时间少八个小时USE_TZ = False

用ModelAdmin来修改管理界面与操作

# account/admin.pyfrom django.contrib import adminfrom .models import Account@admin.register(Account)class AccountAdmin(admin.ModelAdmin):    # 控制列表页按钮显示位置    actions_on_top = False    actions_on_bottom = True    # 是否显示列表页数据数量([选中了n个中的m个])    actions_selection_counter = True

ModelAdmin是后台指定模块的一个控制类, 包括后台的列表页面样式、数据、以及编辑/新增, 操作方法等都由这个类控制, 当继承这个类, 我们就可以通过覆盖这个类的方法, 来完成我们的一些操作

ModelAdmin的配置参数

actions
指定自定义的操作列表
如果是定义的function, 则
actions = [函数名]
如果是class的function, 则
actions = ['类中的方法名']

actions_on_top
指定列表页按钮的是否在上边, 设置为True则在上面

actions_on_bottom
同actions_on_top, 只不过是是否在下方

date_hierarchy
只可作用在DateField和DateTimeField上, 设置后, 可以根据时间段, 去过滤数据

class AccountAdmin(models.ModelAdmin):    ...忽略其他代码    date_hierarchy = 'create_time'

exclude
排除新增/编辑页面需要显示的字段

fields
指定新增、编辑页面要显示的字段

fields = ('account', 'nickname', 'password', 'email', 'phone', 'status')

list_display
控制列表页要显示的字段

list_display = ('account', 'nickname', 'email', 'phone', 'status',                    'create_time')

list_display_links
指定哪些在列表页显示的字段上加链接

list_display_links = ('account', )

list_editable
指定哪些字段可以直接在列表页编辑

 list_editable = ('status', )

list_filter
列表页过滤条件

list_filter = ('status', )

ordering
排序, 影响order_by

ordering = ['id]

list_per_page
控制每页显示的数据数量

ModelAdmin增加自定义操作

每个会员的状态有启用和禁用两种, 现在我们想要增加一个操作来批量启用和禁用

先定义一个操作的方法

class AccountAdmin(models.ModelAdmin):    def disable_account(self, request, queryset):        queryset.update(status=0)    disable_account.short_description='启用'

disable_account包含两个参数
request 是HttpRequest对象, 包含请求的所有清晰
queryset 是数据库操作的QuerySet对象, 也就是当我们点击了操作按钮后, 就会执行queryset.filter(id__in=选中的id).update(status=0), django已经提前帮我们写好了queryset.filter()这部分写好了。

disable_account.short_description是指定这个操作在后台显示的名称

定义好方法后, 需要将操作的方法写入到actions属性中才会生效

class AccountAdmin(models.ModelAdmin):    actions = ['disable_ccount']    def disable_account(self, request, queryset):        queryset.update(status=0)    disable_account.short_description='启用'

同样的, 我们可以再定义一个enable_accoun方法。
然后在列表页的动作中, 就可以看到我们定义的操作了

另一种增加自定义操作的方法

这种方法可以用在一般通用方法中, 比如我们的account模型有一个is_deleted字段, 这个字段的意思是在数据删除后, 设置is_deleted为1, 默认正常时是0, 而django默认的删除操作是直接物理删除数据, 所以我们需要重写删除的方法

# account/admin.pyfrom django.contrib import admin# 禁用默认的删除操作admin.site.disable_action('delete_selected')

这样就会禁用掉默认的删除操作

# 重新定义一个删除操作def deleted_select(self, request, queryset):    queryset.update(is_deleted=1)

原理和之前我们增加操作方法一样
将这个操作注册到admin站点中

admin.site.add_action(deleted_select, '删除数据')

add_action第一个参数是操作的函数名, 第二个是显示的按钮

修改ModelAdmin默认的数据查询方法

在我们修改了删除操作后, 发现即使我们删除了数据, 列表中还是会出现, 这个是不符合我们预期的
所以我们要重写ModelAdmin的查询数据方法, 过滤掉is_deleted=1的数据

class AccountAdmin(admin.ModelAdmin):    ...省略代码    def get_queryset(self, request):        queryset = super().get_queryset(request)        return queryset.filter(is_deleted=0)

第一步queryset = super().get_queryset(request), 就是获取到ModelAdmin的查询对象QuerySet, 然后增加过滤条件filter, 然后ModelAdmin会继续操作查询的方法。

以上是"如何使用django2.0来开发ModelAdmin模型管理"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

方法 数据 后台 字段 管理 模块 控制 按钮 查询 模型 开发 参数 对象 时间 浏览器 篇文章 页面 浏览 登录 代码 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技深圳 科技互联网政务服务 狮子座互联网科技 互联网高科技企业 互联网高科技股票 互联网科技宣传片 镁科技互联网资讯平台 互联网汽车科技小镇 受益于互联网科技的高速发展 注册互联网科技公司经营范围大全 燊美集互联网科技有限公司 佛山市翊博互联网络科技有限公司 朱啸虎曾投资哪些互联网科技企业 珠海东科互联网科技有限公司 广州智享互联网科技 中国互联网公司的科技投入 互联网时代高科技布局 马化腾互联网科技教学 北京瑞云互联网科技有限公司 互联网企业和网络科技有限公司 互联网科技公司经营范围 互联网通讯科技 互联网中国科技 甘肃拓世互联网科技有限公司 互联网时代科技改变生活 上海宁丞科技互联网 互联网保险科技创业 深圳市罗太互联网科技有限公司 世界互联网领先科技成果获奖 2021互联网科技公司排名
0