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)
django-23.admin列表頁優化和排序