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)鍵字達到預期效果:
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,表示不在底部顯 示,當設(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 文件數(shù)據(jù)讀寫的具體實現(xiàn)
這篇文章主要介紹了Python 文件數(shù)據(jù)讀寫的具體實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-01-01解決Python中由于logging模塊誤用導致的內(nèi)存泄露
這篇文章主要介紹了解決Python中由于logging模塊誤用導致的內(nèi)存泄露,針對由于過多的UDP連接所產(chǎn)生的問題,需要的朋友可以參考下2015-04-04