CRM客户关系管理系统(十)
第十章、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里面)

效果:


CRM客户关系管理系统(十)的更多相关文章
- Django CRM客户关系管理系统
CRM需求分析 随着信息化时代带来的科技创新,CRM客户关系管理系统带来的效益在已经成为很多企业提高竞争优势的一分部,CRM客户关系管理系统将企业管理和客户关系管理集成到统一的平台,其系统功能主要体现 ...
- CRM 客户关系管理系统
CRM(Customer Relationship Manager)客户关系管理系统 企业为提高核心竞争力,利用相应的信息技术以及互联网技术协调企业与顾客间在销售.营销和服务上的交互,从而提升其管理方 ...
- CRM客户关系管理系统 北京易信软科信息技术有限公司
北京易信软科信息技术有限公司 推出大型erp系统,库存管理系统,客户关系管理系统,车辆登记管理系统,员工管理系统,采购管理系统,销售管理系统,为您的企业提供最优质的产品服务 北京易信软科您可信赖的北京 ...
- CRM客户关系管理系统-需求概设和详设
大概设计 大概设计就是对需求进行一个整体性分析,把需要实现的功能都列出来,对于客户关系管理系统,我们需要从角色出发,从而确定有哪些需求,最好是画个思维导图 首先我们是为培训学校这么一个场景来开发的,所 ...
- Django项目:CRM(客户关系管理系统)--70--60PerfectCRM实现CRM学生上课记录
#urls.py """PerfectCRM URL Configuration The `urlpatterns` list routes URLs to views. ...
- Django项目:CRM(客户关系管理系统)--69--59PerfectCRM实现king_admin行内编辑
#base_admin.py # ————————24PerfectCRM实现King_admin自定义操作数据———————— from django.shortcuts import render ...
- Django项目:CRM(客户关系管理系统)--65--55PerfectCRM实现CRM客户报名状态颜色变化
# kingadmin.py # ————————04PerfectCRM实现King_admin注册功能———————— from crm import models #print("ki ...
- Django项目:CRM(客户关系管理系统)--64--54PerfectCRM实现CRM客户报名链接
# kingadmin.py # ————————04PerfectCRM实现King_admin注册功能———————— from crm import models #print("ki ...
- Django项目:CRM(客户关系管理系统)--58--48PerfectCRM实现CRM客户报名流程学生合同
# sales_urls.py # ————————47PerfectCRM实现CRM客户报名流程———————— from django.conf.urls import url from bpm. ...
- CRM客户关系管理系统有哪些优缺点?
CRM系统不仅仅是一种技术,也是面向企业的客户管理系统.客户关系管理软件可以帮助销售员快速地找到客户信息,帮助销售员跟踪客户直到完成订单.为提高企业销售效率,CRM被越来越多的企业所采用. 那么,作为 ...
随机推荐
- Android中常用开发工具类—持续更新...
一.自定义ActionBar public class ActionBarTool { public static void setActionBarLayout(Activity act,Conte ...
- Spark技术内幕之任务调度:从SparkContext开始
SparkContext是开发Spark应用的入口,它负责和整个集群的交互,包括创建RDD,accumulators and broadcast variables.理解Spark的架构,需要从这个入 ...
- Web开发学习之路--Springmvc+Hibernate之初体验
本来想继续学习android的,可是用到了android和服务器交互,需要实现个login的功能,苦于没有这么个环境,那就只能自己来搭建了.既然已经基本上可以玩web了,那么接下来使用web开源的框架 ...
- 【java集合框架源码剖析系列】java源码剖析之ArrayList
注:博主java集合框架源码剖析系列的源码全部基于JDK1.8.0版本. 本博客将从源码角度带领大家学习关于ArrayList的知识. 一ArrayList类的定义: public class Arr ...
- request.setAttribute()怎么用的?
request.setAttribute()怎么用的? JSP1代码 String [] test=new String[2]; test[0]="1"; test[1]=&quo ...
- iOS中 动态热修补技术JSPatch 韩俊强的博客
.1.4) JSPatch bridge Objective-C and JavaScript. You can call any Objective-C class and method in Ja ...
- IOS中 浅谈iOS中MVVM的架构设计与团队协作
今天写这篇文章是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇文章的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...
- MySQL数据库入门笔记
2 数据库入门 2.1引入 数据保存到内存: 优点: 1)读写非常快 缺点: 1)程序关闭导致数据丢失 数据保存到文件: 优点: 1)数据可以永久保存 缺点: 1)频繁地IO操作,效率不高! 2)数据 ...
- HttpClient4登陆有验证码的网站
其实就这个问题,本来是很简单的,我自己花了近两个下午才搞定,现在记录一下.也希望能帮助后来的朋友. 先说httpclient 操蛋的httpclent! 为什么说操蛋呢,因为从httpclient ...
- Mybatis执行Executor(一)
在DefaultSqlSession中我们可以看到一系列的增删改查操作的其实都是在调用Executor的接口,Mybatis对外统一提供了一个操作接口类Executor,提供的接口方法有update. ...