python测试开发django-23.admin列表页优化和排序
前言
列表页优化和排序
ModelAdmin
django的options.py里面 ModelAdmin类定义的参数可以设置admin后台列表页面,相关的参数如下
class ModelAdmin(BaseModelAdmin):
"""Encapsulate all admin options and functionality for a given model."""
list_display = ('__str__',) # 显示的字段
list_display_links = () # 可点击的链接字段
list_filter = () # 过滤器
list_select_related = False
list_per_page = 100 # 每页显示100条
list_max_show_all = 200
list_editable = () # 列表页 可编辑字段
search_fields = () # 搜索条件
date_hierarchy = None # 按时间分层
save_as = False
save_as_continue = True
save_on_top = False
paginator = Paginator
preserve_filters = True
inlines = []
排序字段
后台列表页面,如果想按某个字段排序,可以加个ordering参数,比如按创建时间(creat_time)降序
备注:ordering参数在BaseModelAdmin类里面,不在ModelAdmin类,ModelAdmin继承了BaseModelAdmin

修改admin.py文件内容,加个ordering参数,create_time字段前面的-表示按降序
class ControlArticle(admin.ModelAdmin):
# 显示的字段
list_display = ('title', 'body', 'auth', 'create_time', 'update_time')
# 搜索条件
search_fields = ('title',)
# 按字段排序 -表示降序
ordering = ('-create_time',)
# 注册Article表
admin.site.register(models.Article, ControlArticle)
刷新页面后,就是按时间降序了
列表分页
列表页默认是设置的100个记录,我们也可以修改下设置成默认每页显示10个,设置list_per_page = 10
class ControlArticle(admin.ModelAdmin):
# 显示的字段
list_display = ('title', 'body', 'auth', 'create_time', 'update_time')
# 搜索条件
search_fields = ('title',)
# 按字段排序 -表示降序
ordering = ('-create_time',)
# 每页显示10条
list_per_page = 10
# 注册Article表
admin.site.register(models.Article, ControlArticle)

设置默认可编辑字段
有些字段如果想在列表页就能直接编辑,可以加个list_editable参数,这样无需进子页面,可以直接编辑列表页上的字段
如果有多个参数设置,元组里面逗号隔开就行,如 list_editable = ('body', 'auth', )
class ControlArticle(admin.ModelAdmin):
# 显示的字段
list_display = ('title', 'body', 'auth', 'create_time', 'update_time')
# 搜索条件
search_fields = ('title',)
# 按字段排序 -表示降序
ordering = ('-create_time',)
# 每页显示10条
list_per_page = 10
# 可编辑字段
list_editable = ('auth',)
# 注册Article表
admin.site.register(models.Article, ControlArticle)
注意:title是默认的link链接字段,这个不能添加到 list_editable里面,否则会报错

编辑完之后点右下角的保存即可, 这个功能用处不大,了解下即可
link链接
列表页默认点第一个字段可进入编辑页面,如果我们想增加其它的字段也能点击进编辑页面,设置list_display_links = ('title', 'body')
class ControlArticle(admin.ModelAdmin):
# 显示的字段
list_display = ('title', 'body', 'auth', 'create_time', 'update_time')
# 搜索条件
search_fields = ('title',)
# 按字段排序 -表示降序
ordering = ('-create_time',)
# 每页显示10条
list_per_page = 10
# 可编辑字段
list_editable = ('auth',)
# 设置哪些字段可以点击进入编辑界面
list_display_links = ('title', 'body')
# 注册Article表
admin.site.register(models.Article, ControlArticle)
这样点标题和正文都能进编辑页面了

过滤器
如果想快速方便找到作者对应的文字,可以添加过滤器,显示到列表页面右边,如设置list_filter = ('auth', 'title')
class ControlArticle(admin.ModelAdmin):
# 显示的字段
list_display = ('title', 'body', 'auth', 'create_time', 'update_time')
# 搜索条件
search_fields = ('title',)
# 按字段排序 -表示降序
ordering = ('-create_time',)
# 每页显示10条
list_per_page = 10
# 可编辑字段
list_editable = ('auth',)
# 设置哪些字段可以点击进入编辑界面
list_display_links = ('title', 'body')
# 过滤器
list_filter = ('auth', 'title')
# 注册Article表
admin.site.register(models.Article, ControlArticle)
显示效果如下,点右侧作者名称,快速找到相关内容

按时间分层
date_hierarchy参数默认为None,设置一个时间字段,可以按时间分层删选
class ControlArticle(admin.ModelAdmin):
# 显示的字段
list_display = ('title', 'body', 'auth', 'create_time', 'update_time')
# 搜索条件
search_fields = ('title',)
# 按字段排序 -表示降序
ordering = ('-create_time',)
# 每页显示10条
list_per_page = 10
# 可编辑字段
list_editable = ('auth',)
# 设置哪些字段可以点击进入编辑界面
list_display_links = ('title', 'body')
# 过滤器
list_filter = ('auth', 'title')
# 时间分层
date_hierarchy = 'create_time'
# 注册Article表
admin.site.register(models.Article, ControlArticle)

python测试开发django-23.admin列表页优化和排序的更多相关文章
- python测试开发django-36.一对一(OneToOneField)关系查询
前言 前面一篇在xadmin后台一个页面显示2个关联表(OneToOneField)的字段,使用inlines内联显示.本篇继续学习一对一(OneToOneField)关系的查询. 上一篇list_d ...
- python测试开发django-rest-framework-63.基于函数的视图(@api_view())
前言 上一篇讲了基于类的视图,在REST framework中,你也可以使用常规的基于函数的视图.它提供了一组简单的装饰器,用来包装你的视图函数, 以确保视图函数会收到Request(而不是Djang ...
- python测试开发django-197.django-celery-beat 定时任务
前言 django-celery-beat 可以支持定时任务,把定时任务写到数据库. 接着前面这篇写python测试开发django-196.python3.8+django2+celery5.2.7 ...
- python测试开发django-16.JsonResponse返回中文编码问题
前言 django查询到的结果,用JsonResponse返回在页面上显示类似于\u4e2d\u6587 ,注意这个不叫乱码,这个是unicode编码,python3默认返回的编码 遇到问题 接着前面 ...
- python测试开发django-15.查询结果转json(serializers)
前言 django查询数据库返回的是可迭代的queryset序列,如果不太习惯这种数据的话,可以用serializers方法转成json数据,更直观 返回json数据,需要用到JsonResponse ...
- 2019第一期《python测试开发》课程,10月13号开学
2019第一期<python测试开发>课程,10月13号开学! 主讲老师:上海-悠悠 上课方式:QQ群视频在线教学,方便交流 本期上课时间:10月13号-12月8号,每周六.周日晚上20: ...
- Python测试开发-创建模态框及保存数据
Python测试开发-创建模态框及保存数据 原创: fin 测试开发社区 前天 什么是模态框? 模态框是指的在覆盖在父窗体上的子窗体.可用来做交互,我们经常会看到模态框用来登录.确定等等,到底是怎 ...
- Python测试开发-浅谈如何自动化生成测试脚本
Python测试开发-浅谈如何自动化生成测试脚本 原创: fin 测试开发社区 前天 阅读文本大概需要 6.66 分钟. 一 .接口列表展示,并选择 在右边,点击选择要关联的接口,区分是否要登录, ...
- 《Python测试开发技术栈—巴哥职场进化记》—前言
写在前面 今年从4月份开始写一本讲Python测试开发技术栈的书,主要有两个目的,第一是将自己掌握的一些内容分享给大家,第二是希望自己能系统的梳理和学习Python相关的技术栈.当时我本来打算以故事体 ...
随机推荐
- spring-mvc集成 swagger
问题1:spring-mvc集成 swagger, 配置好后界面 404, 原因: dispatcher-servlet.xml 文件中, 要在这上面 <!-- 启用spring mvc 注解 ...
- wpf 如果列表加载超多数据变的卡顿时,使用VirtualizingStackPanel
如果列表加载超多数据变的卡顿时 <ListBox > <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <Virt ...
- SQL语句导致性能问题
前阵子,突然收到服务器的报警信息,于是上服务器找问题,我擦,top看到mysql占的%cpu高得把我吓尿了 从以上的信息看,相信大家已经可以定位到底是那个程序导致服务器CPU负载过高了,但我们要做的是 ...
- .NetCore下使用Prometheus实现系统监控和警报 (四)客户端代码处理
在代码中使用就比较简单了 Nuget包获取下 prometheus-net prometheus-net.AspNetCore 然后添加中间件就行了 app.UseMetricServer(); 默认 ...
- Maximum Shortest Distance 最大团 二分答案 HDU 3585
题意:给出n个点 要求取k个点 这k个点中 距离最小的两个点要求距离最大 拿到手看不出是最大团 也看不出是二分答案(第一次用) 因为答案必然存在 一定有一个最值 所以用二分答案来做 最大距 ...
- Mysql创建用户并授权以及开启远程访问
Mysql创建用户并授权以及开启远程访问 一.创建用户并授权 1.登录mysql mysql -u root -p 2.创建数据库 create database test;//以创建test ...
- DPDK+OpenvSwitch-centos7.4安装
系统版本 [root@controller ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) DPDK版本: dpdk- ...
- jquery 下拉列表选择值
选择下拉列表值样例方式 $("#updateAppName").get(0).selectedIndex = 0; $("#updateAppName").ge ...
- BZOJ2330 SCOI2011糖果
复习了一波差分约束. http://blog.csdn.net/my_sunshine26/article/details/72849441 构图方式记住就好. 本题要倒序插入否则会被卡. #incl ...
- 得到某个android应用 的POST和GET请求的 网址和参数
两种思路: 1.用笔记本建个wifi热点,然后抓包. 2. 把APK装到模拟器上 会在任务管理中有个exe进程,用一个软件可以抓取这个进程的所有请求 .