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----内置插件的更多相关文章

  1. maven(19)-生命周期和内置插件

    生命周期和依赖一样,是maven中最重要的核心概念.平时在使用maven时并不一定需要知道生命周期,但是只有明白了生命周期,才能真正理解很多重要的命令和插件配置. default生命周期 defaul ...

  2. 从零开始的JS生活(三)——内置对象

    咱们继续进行我们的正经的JS介绍.今天所要跟大家讲述的是JS中十分常用.十分常用.十分常用的内置对象. 一.世界上最熟悉的陌生就是,当你看着数组.而我看着你... - 数组对象 1.数组的概念 在内存 ...

  3. Python基础学习参考(三):内置函数

    一:内置函数 在第一篇文章中,我们简单的认识了一下print()函数和input()函数,也就是输入和输出,这些函数我们可以直接的调用,不要自己定义或者引入什么,对吧?想这样的函数就叫做内置函数.这里 ...

  4. python面向对象基础(三)内置方法 __xx__

    __str__和__repr__,__format__ 改变对象的字符串显示__str__,__repr__ 自定制格式化字符串__format__ #_*_coding:utf-8_*_ forma ...

  5. python 装饰器(六):装饰器实例(三)内置装饰器

    内置的装饰器和普通的装饰器原理是一样的,只不过返回的不是函数,而是类对象,所以更难理解一些. @property 在了解这个装饰器前,你需要知道在不使用装饰器怎么写一个属性. def getx(sel ...

  6. Maven系列三Maven内置变量

    Maven内置变量说明: ${basedir} 项目根目录(即pom.xml文件所在目录) ${project.build.directory} 构建目录,缺省为target目录 ${project. ...

  7. 开源的Android开发框架-------PowerFramework使用心得(三)内置浏览器BrowserActivity

    使用内置浏览器必须是引用源码的方式(因为jar中不能打包布局文件等资源).内置浏览器是一个继承自BaseActivity的普通Activity,使用WebView实现. 1.简单的打开内置浏览器 In ...

  8. 咸鱼入门到放弃8--jsp<三>jsp内置对象

    NO. 内置对象 类型 1 pageContext javax.servlet.jsp.PageContext 2 request javax.servlet.http.HttpServletRequ ...

  9. python3 第三十章 - 内置函数之Dictionary相关

    Python字典包含了以下内置函数: 序号 函数及描述 实例 1 len(dict)计算字典元素个数,即键的总数. >>> dict = {'Name': 'cnblogs', 'A ...

  10. Python【zip-map-filter】三个内置函数

    print("============内置函数:zip===========")l2 = ['a','b','c','e','f','g']l3 = [1,2,3]L4=['A', ...

随机推荐

  1. 关于一体机打印新加菜按钮更改为下单小票打印设置FAQ(适用正餐6.0.1.0+,轻餐4.0.6.2+)

    适用版本:正餐6.0.1.0+,轻餐4.0.6.2+ 实际场景:更新后小票设置中的打印新加菜按钮更换为下单小票打印设置,更换后,设置中,有3个选项: 1.仅打印新加菜    (选中后,订单加菜后前台小 ...

  2. [20181031]12c 在线移动数据文件.txt

    [20181031]12c 在线移动数据文件.txt --//12c以前,移动或者改名数据文件是一项比较麻烦的事情,至少要停一下业务.而12c支持在线移动或者改名数据文件,并且有点不可思议--//的是 ...

  3. 穷举,迭代,while循环

    1. 2.大马驼2石粮食,中等马驼1石粮食,两头小马驼1石粮食,要用100匹马,驼100石粮食,该如何分配? 3. 4. 5. 6.

  4. Python 标示符和关键字

    标示符 开发人员在程序中自定义的一些符号和名称.标示符是自己定义的,如变量名 .函数名等 标示符的规则 标示符由字母.下划线和数字组成,且数字不能开头   注:python中的标识符是区分大小写的 命 ...

  5. Lua table笔记

    记录我在使用lua的过程中的一些笔记 默认key为数字递增 local tb={"A",[3]="C","B"} 这个tb通过下标1,2,3 ...

  6. spyder 快捷键

    本文主要介绍了spyder的快捷键. 常用快捷键   快捷键 中文名称 Ctrl+R 替换文本 Ctrl+1 单行注释,单次注释,双次取消注释 Ctrl+4 块注释,单次注释,双次取消注释 F5 运行 ...

  7. no plugin found for prefix 'tomcat 7' in the current project and in the plugin groups的解决方法

    解决方法一: 找到这个settings.xml文件,进行编辑,在pluginGroups标签下加入下面的配置 <pluginGroups><pluginGroup>org.ap ...

  8. C# 中将月份格式化为英语缩写格式

    在测试Android 系统的时候,日期输入框需要输入英语短格式,如下. 考虑到系统日期格式和地域的关系紧密,地域不同,日期格式不同,所以经过查找,找到下面的解决方法. date.ToString(&q ...

  9. shell linux 环境下循环遍历文件夹下所有文件

    demofun(){ ` do if test -f $file then echo "file: $file" elif test -d $file then echo &quo ...

  10. Xlua 不同平台链接库编译

    xlua 下载包中提供lua5.3的库文件,如果需要luajit或者自己添加删除的就需要自己进行编译. Lua53版本没那么多事,主要是LuaJIt版本折腾的比较久. 工具 Xlua使用CMake进行 ...