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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM