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

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

如需定制此頁面的展示信息,可以在文件 admin.py 中使用以下關(guān)鍵字達(dá)到預(yù)期效果:
1. list_display選項(xiàng):用于控制頁面展示的字段,該選項(xiàng)的值為元組或列表類型,其中的元素可以是模型字段或自定義字段
2. list_display_links選項(xiàng):用于設(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è)置字段鏈接顯示效果(藍(lán)色字段點(diǎn)擊可進(jìn)入商品詳情頁):

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

4. list_per_page選項(xiàng):用于設(shè)置每頁顯示的數(shù)據(jù)量
5. list_editable選項(xiàng)用于設(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選項(xiàng):用于配置搜索字段
@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選項(xiàng):用于設(shè)置是否在頂部顯示動作下拉框,默認(rèn)為True,表示在頂部顯示。
8. actions_on_bottom選項(xiàng):用于設(shè)置管理員動作是否在底部顯示,默認(rèn)為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選項(xiàng)用于設(shè)置是否在頂部顯示動作下拉框
# actions_on_bottom選項(xiàng)用于設(shè)置管理員動作是否在底部顯示
actions_on_top = False
actions_on_bottom = True顯示效果:

定制商品詳情頁面(即編輯頁面),依然是在admin.py文件中,有如下選項(xiàng):
1. fields選項(xiàng):用于控制編輯頁要顯示的字段,它的值是元組類
fields選項(xiàng)支持以二維元組形式設(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選項(xiàng):用于對可編輯字段進(jìn)行分組,該選項(xiàng)不可與fields選項(xiàng)同時使用
@admin.register(Goods)
class GoodsAdmin(admin.ModelAdmin):
fieldsets = (
('商品基本信息', {'fields': ['name', 'stock', 'sales']}),
('商品價格信息', {'fields': ['price']})
)效果如下:

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

4. save_on_top選項(xiàng):用于社會是否在編輯頁上方顯示保存、刪除等按鈕,默認(rèn)為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++運(yùn)算速度快于python,python簡單易寫。很多時候?qū)τ谝延械腸++代碼也不想用python重寫,此時就自然而然地想到用python調(diào)用c或者c++,兩全其美,需要的朋友可以參考一下2022-03-03
實(shí)例分析python3實(shí)現(xiàn)并發(fā)訪問水平切分表
在本文中小編給大家整理了關(guān)于python3實(shí)現(xiàn)并發(fā)訪問水平切分表的相關(guān)知識點(diǎn)以及實(shí)例代碼,有興趣的朋友們參考下。2018-09-09
純Python開發(fā)的nosql數(shù)據(jù)庫CodernityDB介紹和使用實(shí)例
這篇文章主要介紹了純Python開發(fā)的nosql數(shù)據(jù)庫CodernityDB介紹和使用實(shí)例,本文實(shí)例包含數(shù)據(jù)插入、數(shù)據(jù)更新、數(shù)據(jù)刪除、數(shù)據(jù)查詢等,需要的朋友可以參考下2014-10-10
如何利用Python和matplotlib更改縱橫坐標(biāo)刻度顏色
對于圖表來說最簡單的莫過于作出一個單一函數(shù)的圖像,下面這篇文章主要給大家介紹了關(guān)于如何利用Python和matplotlib更改縱橫坐標(biāo)刻度顏色的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08
python實(shí)現(xiàn)數(shù)值積分的Simpson方法實(shí)例分析
這篇文章主要介紹了python實(shí)現(xiàn)數(shù)值積分的Simpson方法,實(shí)例分析了Python實(shí)現(xiàn)積分運(yùn)算的相關(guān)技巧,需要的朋友可以參考下2015-06-06

