Django定制Admin頁面詳細實例(展示頁面和編輯頁面)
以上篇文章中注冊的Goods應(yīng)用為例
默認的Admin系統(tǒng)中,Goods應(yīng)用的詳情頁

上圖中,并未顯示商品的具體信息(名稱等),統(tǒng)一名稱為 Goods Object,為方便項目操作和管理,可在文件 model.py 中添加如下代碼,用來顯示商品名稱和 id 信息:
def __str__(self):
return '%s:%s' % (self.id, self.name)效果如下(可通過點擊進入商品詳情頁面):

如需定制此頁面的展示信息,可以在文件 admin.py 中使用以下關(guān)鍵字達到預(yù)期效果:
1. list_display選項:用于控制頁面展示的字段,該選項的值為元組或列表類型,其中的元素可以是模型字段或自定義字段
2. list_display_links選項:用于設(shè)置需在頁面中以鏈接形式展示的字段,可跳轉(zhuǎn)到詳情頁面
# 計算銷售額的函數(shù)
def sales_volume(g):
total = g.price * g.sales
return f'{g.name}銷售額為:{total}'
sales_volume.short_description = '商品銷售額' # 設(shè)置字段描述
# 裝飾器方法注冊應(yīng)用
@admin.register(Goods)
class GoodsAdmin(admin.ModelAdmin):
# 列表界面的自定義
list_display = ('id', 'name', 'price', 'stock', 'sales', 'create_time', 'update_time', sales_volume)
list_display_links = ('id', 'name',) # 設(shè)置字段鏈接顯示效果(藍色字段點擊可進入商品詳情頁):

3. list_filter選項:用于開啟列表頁過濾器,該選項可以接收模型中的字段作為過濾條件
@admin.register(Goods)
class GoodsAdmin(admin.ModelAdmin):
# 列表界面的自定義
list_display = ('id', 'name', 'price', 'stock', 'sales', 'create_time', 'update_time')
# list_filter = ['name',] # 過濾器效果如下(即為通過特定條件篩選目標):

4. list_per_page選項:用于設(shè)置每頁顯示的數(shù)據(jù)量
5. list_editable選項用于設(shè)置可編輯的字段,字段若被指定為編輯字段,頁面上可直接編輯該字段。
@admin.register(Goods)
class GoodsAdmin(admin.ModelAdmin):
# 列表界面的自定義
list_display = ('id', 'name', 'price', 'stock', 'sales', 'create_time', 'update_time', sales_volume)
list_display_links = ('id', 'name',) # 設(shè)置字段鏈接
list_filter = ['id', 'name'] # 過濾器
list_per_page = 5 # 每頁展示5條記錄
list_editable = ('price', 'stock') # 設(shè)置商品價格和庫存為可編輯字段顯示效果如下:

5. search_fields選項:用于配置搜索字段
@admin.register(Goods)
class GoodsAdmin(admin.ModelAdmin):
# 列表界面的自定義
list_display = ('id', 'name', 'price', 'stock', 'sales', 'create_time', 'update_time')
list_display_links = ('id', 'name',) # 設(shè)置字段鏈接
list_filter = ['id', 'name'] # 過濾器
list_per_page = 5 # 每頁展示5條記錄
list_editable = ('price', 'stock') # 設(shè)置商品價格和庫存為可編輯字段
search_fields = ('name',) # 表示以 name 作為搜索字段顯示效果:

7. actions_on_top選項:用于設(shè)置是否在頂部顯示動作下拉框,默認為True,表示在頂部顯示。
8. actions_on_bottom選項:用于設(shè)置管理員動作是否在底部顯示,默認為False,表示不在底部顯 示,當(dāng)設(shè)置為True表示在底部顯示。
@admin.register(Goods)
class GoodsAdmin(admin.ModelAdmin):
# 列表界面的自定義
list_display = ('id', 'name', 'price', 'stock', 'sales', 'create_time', 'update_time', sales_volume)
# actions_on_top選項用于設(shè)置是否在頂部顯示動作下拉框
# actions_on_bottom選項用于設(shè)置管理員動作是否在底部顯示
actions_on_top = False
actions_on_bottom = True顯示效果:

定制商品詳情頁面(即編輯頁面),依然是在admin.py文件中,有如下選項:
1. fields選項:用于控制編輯頁要顯示的字段,它的值是元組類
fields選項支持以二維元組形式設(shè)置字段分欄顯示,在fileds中一個元組表示一欄數(shù)據(jù)
@admin.register(Goods)
class GoodsAdmin(admin.ModelAdmin):
fields = ('name', 'price', 'stock') 顯示效果:

@admin.register(Goods)
class GoodsAdmin(admin.ModelAdmin):
fields = (('name', 'price'), ('stock', 'sales')) # 分欄顯示效果如下:

2. fieldsets選項:用于對可編輯字段進行分組,該選項不可與fields選項同時使用
@admin.register(Goods)
class GoodsAdmin(admin.ModelAdmin):
fieldsets = (
('商品基本信息', {'fields': ['name', 'stock', 'sales']}),
('商品價格信息', {'fields': ['price']})
)效果如下:

3. readonly_fields選項:用于設(shè)置只讀字段
@admin.register(Goods)
class GoodsAdmin(admin.ModelAdmin):
fieldsets = (
('商品基本信息', {'fields': ['name', 'stock', 'sales']}),
('商品價格信息', {'fields': ['price']})
)
readonly_fields = ('name',)效果如下:

4. save_on_top選項:用于社會是否在編輯頁上方顯示保存、刪除等按鈕,默認為False
@admin.register(Goods)
class GoodsAdmin(admin.ModelAdmin):
fieldsets = (
('商品基本信息', {'fields': ['name', 'stock', 'sales']}),
('商品價格信息', {'fields': ['price']})
)
readonly_fields = ('name',)
save_on_top = True效果如下:

總結(jié)
到此這篇關(guān)于Django定制Admin頁面的文章就介紹到這了,更多相關(guān)Django定制Admin頁面內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python直接調(diào)用和使用swig法方調(diào)用c++庫
這篇文章主要介紹了python直接調(diào)用和使用swig法方調(diào)用c++庫,c++運算速度快于python,python簡單易寫。很多時候?qū)τ谝延械腸++代碼也不想用python重寫,此時就自然而然地想到用python調(diào)用c或者c++,兩全其美,需要的朋友可以參考一下2022-03-03
實例分析python3實現(xiàn)并發(fā)訪問水平切分表
在本文中小編給大家整理了關(guān)于python3實現(xiàn)并發(fā)訪問水平切分表的相關(guān)知識點以及實例代碼,有興趣的朋友們參考下。2018-09-09
純Python開發(fā)的nosql數(shù)據(jù)庫CodernityDB介紹和使用實例
這篇文章主要介紹了純Python開發(fā)的nosql數(shù)據(jù)庫CodernityDB介紹和使用實例,本文實例包含數(shù)據(jù)插入、數(shù)據(jù)更新、數(shù)據(jù)刪除、數(shù)據(jù)查詢等,需要的朋友可以參考下2014-10-10
如何利用Python和matplotlib更改縱橫坐標刻度顏色
對于圖表來說最簡單的莫過于作出一個單一函數(shù)的圖像,下面這篇文章主要給大家介紹了關(guān)于如何利用Python和matplotlib更改縱橫坐標刻度顏色的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2022-08-08
python實現(xiàn)數(shù)值積分的Simpson方法實例分析
這篇文章主要介紹了python實現(xiàn)數(shù)值積分的Simpson方法,實例分析了Python實現(xiàn)積分運算的相關(guān)技巧,需要的朋友可以參考下2015-06-06

