3、xadmin----內置插件

一、Action

  Xadmin 默認啓用了批量刪除的事件,代碼見xadmin-->plugins-->action.py  DeleteSelectedActionjson

  若是要爲list列表添加其餘事件,可自定義Action:app

  1)自定義一個Action類,繼承BasicActiveView

    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

  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",]

 

二、數據過濾 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裝飾器註冊

 

三、圖表插件

    在數據列表界面,根據列表數據生成圖表,能夠指定多個數據列生成多個圖表

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

 

五、List界面自動定時刷新

  要啓用自動刷新功能,只須要簡單在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"]

 

八、設置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")

  

九、書籤

  在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', #搜索參數,指定搜索的內容

      },{...}

      ]

相關文章
相關標籤/搜索