三、xadmin----内置插件
1、Action
Xadmin 默认启用了批量删除的事件,代码见xadmin-->plugins-->action.py DeleteSelectedAction
如果要为list列表添加其他事件,可自定义Action:
1)自定义一个Action类,继承BasicActiveView
from xadmin.plugins.actions import BasicActiveView
class MyAction(BasicActiveView):
"""
这里有必要三个属性:
1)action_name="my_action name" # 相当于这个动作的唯一标识,尽量用比较有针对性的名字
2)description = _(u'Test selected %(verbose_name_plural)s') # 描述,出现在Action菜单中,可以使用 '%(verbose_name_plural)s' 代替Model的名字
3)model_perm ='change' # 该Action所需要的权限
"""
2)实现do_action方法
def do_action(self, queryset):
# queryset 是包含了已经选择的数据的queryset
for obj in queryset:
# 对obj的操作
....
return HttpResponse(...)
3)将自定义的Action添加到 ActionPlugin 中
xadmin.plugins.__init__.py中的 PLUGINS =(MyAction,)
4) 在需要使用插件的modelAdmin中
actions = ["MyActions",]
2、数据过滤 Data filters
1)xadmin默认已经添加了模糊搜索,范围搜索和日期范围搜索
使用方法:
通过在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",] # 自定义插件
2)自定义过滤器
参考 xadmin.filter.py
自定义过滤器 需要继承 BaseFilter
并通过xadmin.filter.manage来注册或者通过@manager.register装饰器注册
3、图表插件
在数据列表界面,根据列表数据生成图表,可以指定多个数据列生成多个图表
在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)
4、数据导出
默认可以导出格式: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")
5、List界面自动定时刷新
要启用自动刷新功能,只需要简单在Model OptionClass中设置refresh_times即可
class UserAdmin(object):
refresh_times = (3,5) #用户可以选择三秒或者5秒刷新一次
6、展示详情
此插件可以在List列表界面显示相关字段的详细信息,通过Ajax实现
使用:
通过在Model OptionClass中设置 show_detail_fields属性来指明需要在哪些字段上显示详情
class UserAdmin(object):
show_detail_fields = ["name", "age"]
7、即时编辑数据
此插件使用Ajax立即修改某些字段的值,对于一些经常需要修改的字段,如状态等 非常有用
此插件可以通过OptionClass的list_editable属性设置,‘list_editable’是一个列表,用来指定可以编辑的字段
class UserAdmin(object):
list_editable = ["name", "age"]
8、设置readonly只读
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")
9、书签
在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', #搜索参数,指定搜索的内容
},{...}
]
三、xadmin----内置插件的更多相关文章
- maven(19)-生命周期和内置插件
生命周期和依赖一样,是maven中最重要的核心概念.平时在使用maven时并不一定需要知道生命周期,但是只有明白了生命周期,才能真正理解很多重要的命令和插件配置. default生命周期 defaul ...
- 从零开始的JS生活(三)——内置对象
咱们继续进行我们的正经的JS介绍.今天所要跟大家讲述的是JS中十分常用.十分常用.十分常用的内置对象. 一.世界上最熟悉的陌生就是,当你看着数组.而我看着你... - 数组对象 1.数组的概念 在内存 ...
- Python基础学习参考(三):内置函数
一:内置函数 在第一篇文章中,我们简单的认识了一下print()函数和input()函数,也就是输入和输出,这些函数我们可以直接的调用,不要自己定义或者引入什么,对吧?想这样的函数就叫做内置函数.这里 ...
- python面向对象基础(三)内置方法 __xx__
__str__和__repr__,__format__ 改变对象的字符串显示__str__,__repr__ 自定制格式化字符串__format__ #_*_coding:utf-8_*_ forma ...
- python 装饰器(六):装饰器实例(三)内置装饰器
内置的装饰器和普通的装饰器原理是一样的,只不过返回的不是函数,而是类对象,所以更难理解一些. @property 在了解这个装饰器前,你需要知道在不使用装饰器怎么写一个属性. def getx(sel ...
- Maven系列三Maven内置变量
Maven内置变量说明: ${basedir} 项目根目录(即pom.xml文件所在目录) ${project.build.directory} 构建目录,缺省为target目录 ${project. ...
- 开源的Android开发框架-------PowerFramework使用心得(三)内置浏览器BrowserActivity
使用内置浏览器必须是引用源码的方式(因为jar中不能打包布局文件等资源).内置浏览器是一个继承自BaseActivity的普通Activity,使用WebView实现. 1.简单的打开内置浏览器 In ...
- 咸鱼入门到放弃8--jsp<三>jsp内置对象
NO. 内置对象 类型 1 pageContext javax.servlet.jsp.PageContext 2 request javax.servlet.http.HttpServletRequ ...
- python3 第三十章 - 内置函数之Dictionary相关
Python字典包含了以下内置函数: 序号 函数及描述 实例 1 len(dict)计算字典元素个数,即键的总数. >>> dict = {'Name': 'cnblogs', 'A ...
- Python【zip-map-filter】三个内置函数
print("============内置函数:zip===========")l2 = ['a','b','c','e','f','g']l3 = [1,2,3]L4=['A', ...
随机推荐
- MySQL 基本语句(1)
一.cmd命令行的常用命令: 当我们使用MySQL 5.5 Command Line Client这个客户端登陆时,只能登陆root用户.如果今后创建了别的用户,就很麻烦了,所以我们不用MySQL 5 ...
- 前端AntD框架的upload组件上传图片时遇到的一些坑
前言 本次做后台管理系统,采用的是 AntD 框架.涉及到图片的上传,用的是AntD的 upload 组件. 前端做文件上传这个功能,是很有技术难度的.既然框架给我们提供好了,那就直接用呗.结果用的时 ...
- 自动化测试基础篇--Selenium Xpath定位
摘自https://www.cnblogs.com/sanzangTst/p/7458056.html 学习 什么是xpath? XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言 ...
- Amazon onsite behavior question
https://www.1point3acres.com/bbs/thread-307462-1-1.html http://kraftshala.com/how-to-raise-the-bar-i ...
- 详解javascript立即执行函数表达式(IIFE)
立即执行函数,就是在定义函数的时候直接执行,这里不是申明函数而是一个函数表达式 1.问题 在javascript中,每一个函数在被调用的时候都会创建一个执行上下文,在函数内部定义的变量和函数只能在该函 ...
- 软工团队 - UML设计
软工团队 - UML设计 分工 对于分工我们没有不是按"自己负责部分的核心模块做练习"(每个人对每个图的某一模块来依次做完四个UML)的原因,是在于画这些图并不是都能彻底分成各个& ...
- 【Teradata】tdlocaledef修改默认日期配置
如下所有操作需要使用root登录到TD数据库节点操作 1.获取数据库当前默认配置 //使用root登录TD数据库节点 cd /opt/teradata/tdat/tdbms/xx.xx.xx.xx/b ...
- 【C编程基础】多线程编程
基础知识 1.基本概念 (1)线程,即轻量级进程(LWP:LightWeight Process),是程序执行流的最小单元. 线程是进程中的一个实体,是被系统独立调度和分派的基本单位. (2)线程同步 ...
- nginx + uwsgi 部署 Django+Vue项目
nginx + uwsgi 部署 Django+Vue项目 windows 本地 DNS 解析 文件路径 C:\Windows\System32\drivers\etc 单机本地测试运行方式,调用dj ...
- Scrapy 框架 CrawlSpider 全站数据爬取
CrawlSpider 全站数据爬取 创建 crawlSpider 爬虫文件 scrapy genspider -t crawl chouti www.xxx.com import scrapy fr ...