1. 程式人生 > >django-23.admin列表頁優化和排序

django-23.admin列表頁優化和排序

修改 edit -s als 了解 inline comment cap lar

前言

列表頁優化和排序

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列表頁優化和排序