列表页优化和排序
ModelAdmindjango的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)