前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python测试开发django-23.admin列表页优化和排序

python测试开发django-23.admin列表页优化和排序

作者头像
上海-悠悠
发布2019-03-07 11:49:17
8030
发布2019-03-07 11:49:17
举报

前言

列表页优化和排序

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)
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-02-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从零开始学自动化测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • ModelAdmin
  • 排序字段
  • 列表分页
  • 设置默认可编辑字段
  • link链接
  • 过滤器
  • 按时间分层
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档