Xadmin添加插件——后台列表反选插件,通过plugins添加

与actions插件不同,此种插件需要更改xadmin的源码文件,建议在使用xadmin的时候,将源码安装到项目内。此插件将更改一下文件。

实现效果:

一、创建插件

1.在plugins文件夹下创建checkbox.py文件 

# coding:utf-8

import xadmin
from xadmin.views import BaseAdminPlugin, ListAdminView
from django.template import loader
from xadmin.plugins.utils import get_context_dict


#checkbox  全选 全不选 反选
class CheckboxPlugin(BaseAdminPlugin):
    checkbox = False#此处是为了在adminx中引用

    def init_request(self, *args, **kwargs):
        return bool(self.checkbox)

    def block_top_toolbar(self, context, nodes):
        nodes.append(loader.render_to_string('xadmin/checkbox/model_list.top_toolbar.checkbox.html', context=get_context_dict(context)))

xadmin.site.register_plugin(CheckboxPlugin, ListAdminView)

 

2.更改plugins文件夹下__init__.py文件

 3.补全checkbox.py文件夹下需要的html,反选插件完成。

{% load i18n %}
<div class="btn-group export">
    <a class="dropdown-toggle btn btn-default btn-sm" data-toggle="dropdown" href="#">
        <i class="icon-share"></i> 是否选择 <span class="caret"></span>
    </a>
        <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
        <li><input type="checkbox" onclick="selectAll()" id="selectAll" style="margin-left: 20px">全选</li>
        <li><input type="checkbox" onclick="unSelect()" id="unSelect" style="margin-left: 20px">取消全选</li>
        <li><input type="checkbox" onclick="reverseSelect()" id="reverseSelect" style="margin-left: 20px">反选</li>

    </ul>
    <script>
            $(function() {
                $("#selectAll").click(function(){
                    $("[name = _selected_action]:checkbox").prop("checked", true);
                });
                $("#unSelect").click(function(){
                    $("[name = _selected_action]:checkbox").prop("checked", false);
                });
                $("#reverseSelect").click(function(){
                    $("[name = _selected_action]:checkbox").each(function(){

                        if ($(this).is(":checked")) {
                            $(this).prop("checked", false);
                        } else {
                            $(this).prop("checked", true);
                        }
                    });
                });
            });
     </script>

</div>

二、xadmin引用插件

在我们自己的app项目中,adminx.py引入插件。

import xadmin
from .models import Check


class CheckAdmin(object):
    #form = Scene_dudao_Form
    list_display = ['task_id','problem_point']
    list_filter = ['start_time','big','small']
    search_fields = ['address','task_id']

    checkbox = True#此处与第一步相呼应


xadmin.site.register(Check,CheckAdmin)

Guess you like

Origin blog.csdn.net/qq_15028721/article/details/119032174