Xadmin 默認啓用了批量刪除的事件,代碼見xadmin-->plugins-->action.py DeleteSelectedActionjson
若是要爲list列表添加其餘事件,可自定義Action:app
from xadmin.plugins.actions import BasicActiveView函數
class MyAction(BasicActiveView):post
"""url
這裏有必要三個屬性:spa
1)action_name="my_action name" # 至關於這個動做的惟一標識,儘可能用比較有針對性的名字插件
2)description = _(u'Test selected %(verbose_name_plural)s') # 描述,出如今Action菜單中,可使用 '%(verbose_name_plural)s' 代替Model的名字code
3)model_perm ='change' # 該Action所須要的權限xml
"""blog
def do_action(self, queryset):
# queryset 是包含了已經選擇的數據的queryset
for obj in queryset:
# 對obj的操做
....
return HttpResponse(...)
xadmin.plugins.__init__.py中的 PLUGINS =(MyAction,)
actions = ["MyActions",]
使用方法:
經過在Model對應的Xdamin中添加如下屬性:
1)list_filter屬性:
這個屬性能夠指定能夠過濾的列名,而後系統會自動生成一個搜索器
2)search_fields:
這個屬性指定能夠經過搜索框搜索的數據列的名字,搜索框搜索使用的是模糊查找的方式
3)free_query_filter:
默認爲True,指定是否容許免費搜索,若是容許,用戶能夠經過url指定參數來自定義搜索
class postsAdmin(object): list_display = ["navi_f", "navi_s", "author", "title", "add_time", "is_recommend", "is_essence", "is_auth", "is_approval", "is_commit"] # 指定展現的字段 inField = "forum" # 用於分組 is_execute = True # 是否啓用自定義插件,二級聯動查詢 list_filter = ["is_auth","is_recommend", "is_essence","navi_f", "navi_s", "author", "is_approval"] # 過濾字段 search_fields = ["title"] # 搜索字段 list_editable = ["is_approval"] # 可編輯字段 actions = ["linkage_filter",] # 自定義插件
參考 xadmin.filter.py
自定義過濾器 須要繼承 BaseFilter
並經過xadmin.filter.manage來註冊或者經過@manager.register裝飾器註冊
在數據列表界面,根據列表數據生成圖表,能夠指定多個數據列生成多個圖表
在mode OptionClass(xadmin.py)中設定data_chars屬性,該屬性爲dict類型,key是圖表的標誌名稱,value是圖表的具體設置屬性
如:
class ReportCharAdmin(object):
list_display = ["year","data"]
list_per_page = 20
data_charts = {
"user_count":{"title":u"data charts", "x-field":"year", "y-field":("data",), "order":("year",)}
}
參數說明:
title:圖表的顯示名稱
x-field:圖表的x軸數據列,通常是時間,日期等
y-field:圖表的y軸數據列,該項是一個list,能夠同時設置多個值,會在同一個列表中顯示多條曲線
order:排序信息,若是不寫則使用數據列表的順序
源碼參見 xadmin.plugins.chart.ChartsPlugin(BaseAdminPlugin)
xadmin.plugins.chart.ChartsView(ListAdminView)
默承認以導出格式:Excel,CSV, XML 和 Json,若是想要導出Excel,須要安裝xlwt
能夠經過在Model OptionClass中設置list_export來指定導出格式,或者設置None禁用導出功能
class UserAdmin(object):
list_export = ('xls', "xml", "json")
能夠經過設置list_export_fields來指定導出列
list_export_fields = ('id', "title", "status", "create_time")
要啓用自動刷新功能,只須要簡單在Model OptionClass中設置refresh_times便可
class UserAdmin(object):
refresh_times = (3,5) #用戶能夠選擇三秒或者5秒刷新一次
此插件能夠在List列表界面顯示相關字段的詳細信息,經過Ajax實現
使用:
經過在Model OptionClass中設置 show_detail_fields屬性來指明須要在哪些字段上顯示詳情
class UserAdmin(object):
show_detail_fields = ["name", "age"]
此插件使用Ajax當即修改某些字段的值,對於一些常常須要修改的字段,如狀態等 很是有用
此插件能夠經過OptionClass的list_editable屬性設置,‘list_editable’是一個列表,用來指定能夠編輯的字段
class UserAdmin(object):
list_editable = ["name", "age"]
class UserAdmin(object):
# 由於只是單純的設置readonly_fields屬性的話,會同時限定了普通用戶和超級用戶,可是不少時候咱們並不但願限制超級用戶,全部重定義get_readonly_fields函數
def get_readonly_fields(self):
if self.user.is_superuser:
self.readonly_fields = []
return self.readonly_fields
readonly_fields = ("username", "age")
在Model OptionClass中設置以下屬性:
show_bookmarks = True # 默認值就爲True
list_bookmarks # 用戶能夠在List列表自行添加書籤,也能夠預先設置書籤,預先設置書籤以下:
list_bookmarks = [{
"title":"Femal", # 書籤的名字
"query":{"gender":True}, # 過濾參數,是標準的queryset過濾
"order":("-age"), #排序參數
"cols":("firstname", "age", "phones"), # 顯示的列
"search":'Tom', #搜索參數,指定搜索的內容
},{...}
]