zoukankan      html  css  js  c++  java
  • 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)
    

  • 相关阅读:
    技术期刊 · 白日照耀开鸿蒙 | 深入鸿蒙 ACE UI 框架解析;无限循环的 useEffect 类型;用 Three.js 实现 3D 房间;图神经网络入门;超基础的机器学习入门-原理篇
    青岛敏捷之旅,来了!
    痞子衡嵌入式:借助Serial Plot软件测量i.MXRT系列FlexSPI驱动Flash页编程执行时间分布
    痞子衡嵌入式:超级下载算法RT-UFL v1.0在Segger Ozone下的使用
    痞子衡嵌入式:超级下载算法RT-UFL v1.0在Keil MDK下的使用
    痞子衡嵌入式:超级下载算法RT-UFL v1.0在IAR EW for Arm下的使用
    痞子衡嵌入式:超级下载算法RT-UFL v1.0在MCUXpresso IDE下的使用
    《痞子衡嵌入式半月刊》 第 42 期
    痞子衡嵌入式:i.MXRT全系列下FlexSPI外设AHB Master ID定义与AHB RX Buffer指定的异同
    CDP客户数据管理平台体系化搭建
  • 原文地址:https://www.cnblogs.com/yoyoketang/p/10345793.html
Copyright © 2011-2022 走看看