https://www.cnblogs.com/NolaLi/p/9456864.htmlhtml
Xadmin 默认启用了批量删除的事件,代码见xadmin-->plugins-->action.py DeleteSelectedActionjson
若是要为list列表添加其余事件,可自定义Action:函数
from xadmin.plugins.actions import BasicActiveViewurl
class MyAction(BasicActiveView):插件
"""xml
这里有必要三个属性:htm
1)action_name="my_action name" # 至关于这个动做的惟一标识,尽可能用比较有针对性的名字blog
2)description = _(u‘Test selected %(verbose_name_plural)s‘) # 描述,出如今Action菜单中,可使用 ‘%(verbose_name_plural)s‘ 代替Model的名字排序
3)model_perm =‘change‘ # 该Action所须要的权限继承
"""
def do_action(self, queryset):
# queryset 是包含了已经选择的数据的queryset
for obj in queryset:
# 对obj的操做
....
return HttpResponse(...)
xadmin.plugins.actions.ActionPlugin
使用方法:
经过在Model对应的Xdamin中添加如下属性:
1)list_filter属性:
这个属性能够指定能够过滤的列名,而后系统会自动生成一个搜索器
2)search_fields:
这个属性指定能够经过搜索框搜索的数据列的名字,搜索框搜索使用的是模糊查找的方式
3)free_query_filter:
默认为True,指定是否容许免费搜索,若是容许,用户能够经过url指定参数来自定义搜索
eg:
class UserAdmin(object):
list_filter = ("is_staff","is_superuser")
search_fields = ("username", "first_name")
参考 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",)}
}
参数说明:
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‘, #搜索参数,指定搜索的内容
},{...}
]