CRM客户关系管理系统(十) 第十章、kingadmin+admin+actions功能开发

第十章、kingadmin+admin+actions功能开发

10.1. django admin的action

 可以自己写个函数执行批量操作

crm/admin.py

后台admin action就会多一个change status,可以修改status状态

 执行后

10.2.kingadmin actions功能开发

(1)crm/kingadmin.py

(2)kingamdin/admin_base.py

class BaseKingAdmin(object):

    list_display = []
    list_filter = []
    search_fields = []
    #只读
    readonly_fields = []
    filter_horizontal = []
    list_per_page = 5
    actions = []

(3)table_obj_list.html

加个action框+"单选/全选/全部取消"+执行按钮

     <form>
            <div class="row">
                <div class="col-lg-3">
                    <select class="form-control" name="action">
                            <option value="">-------</option>
                        {% for action in admin_class.actions %}
                            <option value="{{ action }}">{{ action }}</option>
                        {% endfor %}
                    </select>
                </div>
                <div class="col-lg-2">
                    <input type="submit" value="执行" class="btn btn-primary" style="padding: 6px">
                </div>
            </div>
        </form>

给所有客户信息添加一个可选框

th用来全选

每个td都要加

js代码(可以全选/取消全选)

<script>

function SelectALLObjs(ele) {

    if ($(ele).prop('checked')){
        $('input[row-select]').prop('checked',true)

    }else{
         $('input[row-select]').prop('checked',false)
    }
}

</script> 

 效果:

执行action

table_obj_list.html

 js代码

function ActionCheck(ele){
    var selected_action = $("select[name='action']").val();
    var selected_objs = $("input[row-select]").filter(":checked");
    console.log($("select[name='action']").val())
    if (!selected_action){
        alert("no action selected!")
        return false
    }
    if (selected_objs.length == 0 ){
        alert("no object selected!")
        return false
    }else {
        //生成一个标签,放到form里

        var selected_ids = [];
        $.each(selected_objs,function () {
            console.log($(this) );
            selected_ids.push($(this).val())
        })
        console.log(selected_ids)
        var input_ele = "<input type='hidden' name='selected_ids' value=" + JSON.stringify(selected_ids) + ">"

        $(ele).append(input_ele);
    }
}

后台kingadmin/views.py

 现在就可以批量执行action操作了。

10.3.添加默认的delete action

 (1)kingadmin/admin_base.html

  • 添加一个default_actions = ['delete_selected_objs'],不能直接加载actions里面,因为子类会覆盖父类的actions
  • 利用__init__方法,把defautl_actions里面的值添加到actions里面。
# kingadmin/admin_base.py

import json
from django.shortcuts import render

class BaseKingAdmin(object):

    def __init__(self):
        self.actions.extend(self.default_actions)

    list_display = []
    list_filter = []
    search_fields = []
    #只读
    readonly_fields = []
    filter_horizontal = []
    list_per_page = 5
    default_actions = ['delete_selected_objs']
    actions = []


    def delete_selected_objs(self,request,querysets):

        querysets_ids = json.dumps([i.id for i in querysets])

        return render(request,'kingadmin/table_obj_delete.html',{'admin_class':self,      #self就是admin_class
                                                                 'objs':querysets,
                                                                 'querysets_ids':querysets_ids
                                                                 })

(2)table_obj_delete.html

 (3)kingadmin/views.py

 在views中要对post进行判断(因为“执行”和“确认删除” 都是post动作,同时存在在def table_obj_list里面)

效果:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏WebDeveloper

简单封装curl的get与post发送数据

3063
来自专栏IT综合技术分享

一、搭建SpringBoot2.0.0M4基础Web项目

SpringBootDemo1 - [~-IdeaProjects-SpringBootDemo1] - IntelliJ IDEA 2017.2.4_022....

2072
来自专栏nummy

sphinx入门指南【2】 toctree指令详解

reST本身并不支持同时与多个文档进行交互,或者说将一个文档保存到多个文件中。Sphinx提供了自定义指令toctree来支持实现这个功能。

1193
来自专栏DeveWork

WordPress 一键关闭/禁止页面评论功能

WordPress 中页面都是默认开启批量功能的,对于一些特殊的网站,可能需要禁止所有的页面的评论功能;一个个去页面编辑页面去禁止固然可以,但是页面一多的话那就...

1966
来自专栏较真的前端

PWA 入门: 写个非常简单的 PWA 页面

6575
来自专栏木子昭的博客

最简单靠谱的vsftpd安装指南(Ubuntu16.04)

vsftp (very secure FTP daemon)意为非常安全的ftp进程 特点:小巧|免费 | 安全,是Linux下最受推崇的ftp服务 -...

3438
来自专栏Python自动化测试

python自动化环境搭建

selenium是测试web应用程序的框架,selenium为没有测试脚本的人提供了(seleniumide)提供了录制/回放的工具,同时它也提供了特定...

1453
来自专栏Youngxj

[软件分享]小巧实用的网页模拟蜘蛛抓取1.0

4363
来自专栏Jerry的SAP技术分享

删除所有正在运行和退出的docker实例

使用这个命令,把docker ps -aq产生的输入作为输入传入到docker rm命令,达到删除所有容器实例的效果。

800
来自专栏有困难要上,没有困难创造困难也要上!

Webpack2入门

3037

扫码关注云+社区

领取腾讯云代金券