目錄
一、插件綜述
(官方文檔中, 此處沒有內容。)
二、內建插件
1. Action
1.1 功能
Action 插件在數據列表頁提供了數據選擇功能。 被選中的數據可以在操作之後進行特殊處理。 默認提供的 Action 爲批量刪除功能。
1.2 屏幕截圖
1.3 使用
開發者可以設置 Model OptionClass
的屬性 action 以啓用一個 Action。 該屬性是一個列表。 Xadmin 默認啓用了 DeleteSelectedAction
, 它提供了一個可以從視圖列表中刪除選中數據的選項。 你同樣可以實現你的定製化 Action 類, 請看下面的例子:
首先, 我們需要一個繼承 BaseActionView
類的一個 Action 類。 BaseActionView
類繼承於 ModelAdminView
:
from xadmin.plugins.actions import BaseActionView
class MyAction(BaseActionView):
# 這裏需要填寫三個屬性
action_name = "my_action" # 相當於這個 Action 的唯一標示, 儘量用比較針對性的名字
description = _(u'Test selected %(verbose_name_plural)s') # 描述, 出現在 Action 菜單中, 可以使用 ``%(verbose_name_plural)s`` 代替 Model 的名字.
model_perm = 'change' # 該 Action 所需權限
# 而後實現 do_action 方法
def do_action(self, queryset):
# queryset 是包含了已經選擇的數據的 queryset
for obj in queryset:
# obj 的操作
...
# 返回 HttpResponse
return HttpResponse(...)
然後在 Model
中的 OptionClass
中使用這個 Action:
class MyModelAdmin(object):
actions = [MyAction, ]
這樣你就完成了這個 Action。
1.4 接口(API)
class xadmin.plugins.actions.ActionPlugin(admin_view)
2. 數據過濾器(data filter)
2.1 功能
列表視圖提供了數據過濾功能, 你可以通過模糊搜索、 數值範圍、 日期範圍等進行數據搜索。
2.2 屏幕截圖
2.3 使用
在 Model OptionClass
中, 設置下面這些屬性:
2.3.1 list_filter
屬性
這個屬性可以指定能夠被過濾的字段名, 然後系統將會依此自動生成一個搜索器。
2.3.2 search_fields
屬性
這個屬性指定可以通過搜索框搜索的數據列的名字, 搜索框搜索使用的是模糊查找的方式, 一般用來搜素名字等字符串字段。
2.3.3 free_query_filter
屬性
無論是否允許自由搜索, 該值默認爲 True。 如果能夠進行自由搜索, 用戶可以通過傳輸帶參數的 url 執行自定義的搜索。 比如:
http://xxx.com/xadmin/auth/user/?name__contains=tony
一個使用了過濾器的例子:
class UserAdmin(object):
list_filter = ('is_staff', 'is_superuser', 'is_active')
search_fields = ('username', 'first_name', 'last_name', 'email')
2.4 版本
暫時達不到。
2.5 創建過濾器
你可以創建你自己的過濾器去執行一些指定的搜索。 過濾器需要繼承 xadmin.filters.BaseFilter
。 使用 xadmin.filters.manager
去註冊這個過濾器。
3. 圖表插件(chart plugin)
3.1 功能
在列表視圖頁面, 可以根據列表中的數據生成數據圖表。 可以指定一系列的數據字段以生成更多的圖表。
3.2 屏幕截圖
3.3 使用
設置 Model OptionClass
的 data_charts
屬性爲一個字典。 key 爲圖表的名字, value 是指定設置的屬性。 比如:
class RecordAdmin(object):
data_charts = {
"user_count": {'title': u"User Report", "x-field": "date", "y-field": ("user_count", "view_count"), "order": ('date',)},
"avg_count": {'title': u"Avg Report", "x-field": "date", "y-field": ('avg_count',), "order": ('date',)}
}
圖表的重要屬性是:
title
: 圖表的顯示名稱
‘x-field’ 屬性表示的是圖表 X 軸的數據, 通常是日期或時間。
‘y-field’ 是圖表的 Y 軸數據, 是一個包含數據字段的列表。 如果 ‘y-field’ 包含不止一個字段, 它裏面的所有數據都將在這一張圖表中展示出來。
order
: 排序信息, 如果沒有提供, 將會使用數據列表的順序。
3.4 版本
暫時達不到。
3.5 接口(API)
class xadmin.plugins.chart.ChartsPlugin(admin_view)
class xadmin.plugins.chart.ChartsView(request, *args, **kwargs)
4. 書籤(Bookmarks)
4.1 功能
它記錄了一些指定操作的結果, 比如數據過濾或者排序。 添加的書籤也可以在索引頁的控制面板上作爲小工具被添加。
4.2 屏幕截圖
4.3 使用
在 Model OptionClass
中設置下面這些屬性:
show_bookmarks
屬性:
設置啓用或停用書籤功能, 默認爲 True。
list_bookmarks
屬性:
設置默認書籤。 用戶可以在列表頁添加他們的書籤。 你也可以提前提供一些書籤。 比如:
class UserAdmin(object):
list_bookmarks = [{
'title': "Female", # 書籤的名稱, 顯示在書籤菜單中
'query': {'gender': True}, # 過濾參數, 是標準的 queryset 過濾
'order': ('-age'), # 排序參數
'cols': ('first_name', 'age', 'phones'), # 顯示的列
'search': 'Tom' # 搜索參數, 指定搜索的內容
}, {...}
]
4.4 版本
暫時達不到。
5. 數據導出(Data exporting)
5.1 功能
此插件在數據列表頁提供了導出數據的功能。 數據可以被格式化爲 Excel、 CSV、 XML 或 json 的形式後導出。
5.2 屏幕截圖
5.3 使用
【小提示】想要將數據格式化爲 Excel 後導出, 需要先安裝 xlwt(http://pypi.python.org/pypi/xlwt)。
默認情況下, Xadmin 可以導出 Excel、 CSV、 XML 和 JSON 格式的數據文件。 導出數據文件的格式可以在 OptionClass 的 list_export
屬性中進行設置, 該屬性中包含 xls、 cvs、 xml 和 json。 或者你可以將該屬性值設置爲 None 來關閉數據導出功能。
class MyModelAdmin(object):
list_export = ('xls', 'xml', 'json')
6. 依據給定時間間隔刷新列表(Refresh the list at given intervals)
6.1 功能
這個插件提供了數據刷新的功能, 它對於從列表視圖頁檢查實時數據來說非常有用。
6.2 屏幕截圖
6.3 使用
想要啓用刷新功能插件, 只需要簡單地設置一下 OptionClass
的 refresh_times
屬性。 refresh_times
是一個包含了時間間隔的列表。 默認情況下, 這個插件是未激活的。 請看下面這個例子:
class MyModelAdmin(object):
# 這會顯示一個下拉列表, 用戶可以選擇 3 秒或 5 秒刷新一次頁面
refresh_times = (3, 5)
7. 展示數據詳情(Display data details)
7.1 功能
這個插件使用 Ajax 在列表視圖頁面展示相關字段的詳情。
7.2 屏幕截圖
7.3 使用
你可以設置 OptionClass
中的 show_detail_fields
和 show_all_rel_details
兩個屬性以使用這個插件。 show_detail_fields
屬性指定詳細顯示的字段, 當 show_all_rel_details
被設置爲 True(默認設置) 時, 所有有關的字段均會在詳情中展示。 請看下面這個例子:
class MyModelAdmin(object):
show_detail_fields = ['group', 'father', ... ]
8. 即時數據編輯(instant data edit)
8.1 功能
此插件使用 Ajax 進行實時數據的修改。不需要提交或者刷新頁面就能完成數據的更改。 當涉及到一些需要頻繁修改的字段(如: 狀態)時, 它非常有用。
8.2 屏幕截圖
8.3 使用
可以通過 OptionClass
的 list_editable
屬性來設置這個插件。 這個元組類型的屬性用來在列表視圖頁指定可以編輯的字段。
class MyModelAdmin(object):
list_editable = ['price', 'status', ... ]