iT邦幫忙

2023 iThome 鐵人賽

DAY 25
0

昨天已經把 Django admin 基本功能介紹完了,不過還有其他變數可以使用,今天把它給補完:

列表過濾器 filter

如果今天想要增加一個過濾器,可以這樣增加:

# online/admin.py

class EmployerAdmin(admin.ModelAdmin):
    list_display = ('first_name', 'last_name', 'age')
    list_filter = ('first_name', 'age')

這樣設定好後,在 Employer 的最右側,會多一個欄位,那邊可以用點擊的方法篩選你想要看的物件,如下圖:

https://ithelp.ithome.com.tw/upload/images/20231006/20162365tiOubVfu1o.png

控制欄位顯示位置

如果今天想要改變一下後台的新增欄位排版,可以這樣修改:

# online/admin.py

class EmployerAdmin(admin.ModelAdmin):
    list_display = ('first_name', 'last_name', 'age')
    list_filter = ('first_name', 'age')
    fields = [('first_name', 'last_name'), 'age']

可以看到下圖的欄位,從原本的往下排,變成兩個並列:
https://ithelp.ithome.com.tw/upload/images/20231006/20162365bGYWDUPgwu.png

增加板塊區隔多個欄位

如我今天更進階一點,你想要讓分組的欄位可以取名,可以像下面那樣:

# online/admin.py

class EmployerAdmin(admin.ModelAdmin):
    list_display = ('first_name', 'last_name', 'age')
    list_filter = ('first_name', 'age')

    fieldsets = (
        ('name', {
            'fields': ('first_name', 'last_name')
        }),
    )

看下圖會發現的確欄位上有名字:

https://ithelp.ithome.com.tw/upload/images/20231006/20162365LXNiigTX16.png

不過一定有人會好奇, age 這個欄位怎麼不見了,因為目前我們只有三個 field,如果今天我們這樣寫:

# online/admin.py

class EmployerAdmin(admin.ModelAdmin):
    list_display = ('first_name', 'last_name', 'age')
    list_filter = ('first_name', 'age')

    fieldsets = (
        ('name', {
            'fields': ('first_name', 'last_name')
        }),
        ('info', {
            'fields': ('age')
        }),        
    )

上面這樣會報錯喔!!!!再提醒一次,這樣寫會報錯喔!!!!一定要記得,所以如果不想要讓他報錯的話,記得要增再增加一個欄位,像這樣

# online/admin.py

class EmployerAdmin(admin.ModelAdmin):
    list_display = ('first_name', 'last_name', 'age')
    list_filter = ('first_name', 'age')

    fieldsets = (
        ('name', {
            'fields': ('first_name', 'last_name')
        }),
        ('info', {
            'fields': ('age', 'other Field')
        }),        
    )

這樣加上去後,就會多一個 info 的區塊,這個區塊裡面會有 ageother Field 的欄位設定, 不過由於今次案例我們沒有多一個欄位,因此就不示範了。

總結

今天學到哪些東西呢?

  1. Django admin 列表過濾器
  2. Django admin 控制欄位顯示位置
  3. Django admin 增加板塊區隔多個欄位

最後附上 Github: https://github.com/eagle0526/Django-store


上一篇
DAY24 - Django admin 介紹 - 1
下一篇
DAY26 - Django 登入系統 - 1
系列文
Django 初學入門 - 從 ROR 的角度來學習 Django30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言