1. 程式人生 > >xadmin----內置插件

xadmin----內置插件

名稱 splay time lte 書簽 代碼 har 展示 desc

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.actions.ActionPlugin

2、數據過濾 Data filters

  1)xadmin默認已經添加了模糊搜索,範圍搜索和日期範圍搜索

  使用方法:

    通過在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")

  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",)}

        }

    參數說明:

      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----內置插件