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

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

如需定制此頁(yè)面的展示信息,可以在文件 admin.py 中使用以下關(guān)鍵字達(dá)到預(yù)期效果:
1. list_display選項(xiàng):用于控制頁(yè)面展示的字段,該選項(xiàng)的值為元組或列表類型,其中的元素可以是模型字段或自定義字段
2. list_display_links選項(xiàng):用于設(shè)置需在頁(yè)面中以鏈接形式展示的字段,可跳轉(zhuǎn)到詳情頁(yè)面
# 計(jì)算銷售額的函數(shù)
def sales_volume(g):
total = g.price * g.sales
return f'{g.name}銷售額為:{total}'
sales_volume.short_description = '商品銷售額' # 設(shè)置字段描述
# 裝飾器方法注冊(cè)應(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)入商品詳情頁(yè)):

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

4. list_per_page選項(xiàng):用于設(shè)置每頁(yè)顯示的數(shù)據(jù)量
5. list_editable選項(xiàng)用于設(shè)置可編輯的字段,字段若被指定為編輯字段,頁(yè)面上可直接編輯該字段。
@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'] # 過(guò)濾器
list_per_page = 5 # 每頁(yè)展示5條記錄
list_editable = ('price', 'stock') # 設(shè)置商品價(jià)格和庫(kù)存為可編輯字段顯示效果如下:

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'] # 過(guò)濾器
list_per_page = 5 # 每頁(yè)展示5條記錄
list_editable = ('price', 'stock') # 設(shè)置商品價(jià)格和庫(kù)存為可編輯字段
search_fields = ('name',) # 表示以 name 作為搜索字段顯示效果:

7. actions_on_top選項(xiàng):用于設(shè)置是否在頂部顯示動(dòng)作下拉框,默認(rèn)為T(mén)rue,表示在頂部顯示。
8. actions_on_bottom選項(xiàng):用于設(shè)置管理員動(dòng)作是否在底部顯示,默認(rèn)為False,表示不在底部顯 示,當(dāng)設(shè)置為T(mén)rue表示在底部顯示。
@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è)置是否在頂部顯示動(dòng)作下拉框
# actions_on_bottom選項(xiàng)用于設(shè)置管理員動(dòng)作是否在底部顯示
actions_on_top = False
actions_on_bottom = True顯示效果:

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

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

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

總結(jié)
到此這篇關(guān)于Django定制Admin頁(yè)面的文章就介紹到這了,更多相關(guān)Django定制Admin頁(yè)面內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python機(jī)器學(xué)習(xí)基礎(chǔ)特征工程算法詳解
這篇文章主要為大家介紹了python機(jī)器學(xué)習(xí)基礎(chǔ)特征工程的算法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2021-11-11
Python matplotlib學(xué)習(xí)筆記之坐標(biāo)軸范圍
這篇文章主要介紹了Python matplotlib學(xué)習(xí)筆記之坐標(biāo)軸范圍,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06
Python 文件數(shù)據(jù)讀寫(xiě)的具體實(shí)現(xiàn)
這篇文章主要介紹了Python 文件數(shù)據(jù)讀寫(xiě)的具體實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
解決Python中由于logging模塊誤用導(dǎo)致的內(nèi)存泄露
這篇文章主要介紹了解決Python中由于logging模塊誤用導(dǎo)致的內(nèi)存泄露,針對(duì)由于過(guò)多的UDP連接所產(chǎn)生的問(wèn)題,需要的朋友可以參考下2015-04-04

