Django Xadmin 官方文檔 之四 Xadmin 插件

一、插件綜述

(官方文檔中, 此處沒有內容。)

二、內建插件

1. Action

1.1 功能

Action 插件在數據列表頁提供了數據選擇功能。 被選中的數據可以在操作之後進行特殊處理。 默認提供的 Action 爲批量刪除功能。

1.2 屏幕截圖

Action Plugin

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 屏幕截圖

Data Filter Plugin

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 屏幕截圖

Chart Plugin

3.3 使用

設置 Model OptionClassdata_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 屏幕截圖

BookMark Plugin

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 屏幕截圖

Data Exporting Plugin

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 屏幕截圖

Refresh the list at given intervals

6.3 使用

想要啓用刷新功能插件, 只需要簡單地設置一下 OptionClassrefresh_times屬性。 refresh_times是一個包含了時間間隔的列表。 默認情況下, 這個插件是未激活的。 請看下面這個例子:

class MyModelAdmin(object):
	# 這會顯示一個下拉列表, 用戶可以選擇 3 秒或 5 秒刷新一次頁面
	refresh_times = (3, 5)

7. 展示數據詳情(Display data details)

7.1 功能

這個插件使用 Ajax 在列表視圖頁面展示相關字段的詳情。

7.2 屏幕截圖

Display data details plugin

7.3 使用

你可以設置 OptionClass中的 show_detail_fieldsshow_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 屏幕截圖

Instant Data Edit Plugin

8.3 使用

可以通過 OptionClasslist_editable屬性來設置這個插件。 這個元組類型的屬性用來在列表視圖頁指定可以編輯的字段。

class MyModelAdmin(object):
	list_editable = ['price', 'status', ... ]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章