python测试开发django(21)--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参数,比如按创建时间(create_time)升序(页面展示默认为降序)

备注:ordering参数在BaseModelAdmin类里面,不在ModelAdmin类,ModelAdmin继承了BaseModelAdmin

 修改admin.py文件内容,加个ordering参数;'-create_time'字段前面加个-表示按降序;

class ContolArticles(admin.ModelAdmin):
    #显示的字段
    list_display = ('title','body','auth','create_time','update_time')
    #搜索条件
    search_fields = ('title',)
    #按字段排序
    ordering=('create_time',)
#注册Articles表
admin.site.register(models.Articles,ContolArticles)

刷新页面后,就是按时间升序排列了;

 列表分页

列表默认是设置的100个记录,我们也可以修改下设置成默认每页显示5个,设置list_per_page=5

class ContolArticles(admin.ModelAdmin):
    #显示的字段
    list_display = ('title','body','auth','create_time','update_time')
    #搜索条件
    search_fields = ('title',)
    #按字段排序
    ordering=('create_time',)
    #每页显示5条
    list_per_page=5
#注册Articles表
admin.site.register(models.Articles,ContolArticles)

  

设置默认可编辑字段

有些字段如果想在列表页就能直接编辑,可以加个list_editable参数,这样无需进子页面,可以直接编辑列表页上的字段

如果有多个参数设置,元组里面逗号隔开就行,如 list_editable=('body','auth',)

class ContolArticles(admin.ModelAdmin):
    #显示的字段
    list_display = ('title','body','auth','create_time','update_time')
    #搜索条件
    search_fields = ('title',)
    #按字段排序
    ordering=('create_time',)
    #每页显示5条
    list_per_page=5

    #可编辑字段
    list_editable = ('auth',)
#注册Articles表
admin.site.register(models.Articles,ContolArticles)

 注意:title是默认的link链接字段,这个不能添加到list_editable里面,否则会报错; 

编辑完之后点击右下角的保存即可,这个功能用处不大,了解下即可

link链接

列表页面默认点第一个字段(如,标题title)可进行编辑页面,如果我们想增加其他的字段也能点击进编辑页面,设置list_display_links=('title','body')

class ContolArticles(admin.ModelAdmin):
    #显示的字段
    list_display = ('title','body','auth','create_time','update_time')
    #搜索条件
    search_fields = ('title',)
    #按字段排序
    ordering=('create_time',)
    #每页显示5条
    list_per_page=5

    #可编辑字段
    list_editable = ('auth',)

    #设置哪些字段可以点击进入编辑界面
    list_display_links=('body',)
#注册Articles表
admin.site.register(models.Articles,ContolArticles)

 这样点正文就能进入编辑页面了,此时点标题不可以进入编辑页面; 

 过滤器

如果想快速方便找到作者对应的文字,可以添加过滤器,显示到列表页面右边,如设置list_filter=('auth','title')

class ContolArticles(admin.ModelAdmin):
    #显示的字段
    list_display = ('title','body','auth','create_time','update_time')
    #搜索条件
    search_fields = ('title',)
    #按字段排序
    ordering=('create_time',)
    #每页显示5条
    list_per_page=5

    #可编辑字段
    list_editable = ('auth',)

    #设置哪些字段可以点击进入编辑界面
    list_display_links=('body',)
    #过滤器
    list_filter=('auth','title',)
#注册Articles表
admin.site.register(models.Articles,ContolArticles)

 显示效果如下,点击右侧作者名称,快速找到相关内容(如,yun) 

 按时间分层

date_hierarchy参数默认为None,设置一个时间字段,可以按时间分层筛选;

class ContolArticles(admin.ModelAdmin):
    #显示的字段
    list_display = ('title','body','auth','create_time','update_time')
    #搜索条件
    search_fields = ('title',)
    #按字段排序
    ordering=('create_time',)
    #每页显示5条
    list_per_page=5

    #可编辑字段
    list_editable = ('auth',)

    #设置哪些字段可以点击进入编辑界面
    list_display_links=('body',)
    #过滤器
    list_filter=('auth','title',)

    #时间分层
    date_hierarchy = 'create_time'
#注册Articles表
admin.site.register(models.Articles,ContolArticles) 

越努力,越幸运!!! good good study,day day up!!!
原文地址:https://www.cnblogs.com/canglongdao/p/14109236.html