第十章、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里面)

效果:

最新文章

  1. 基于Jforum开源项目的论坛网站
  2. Spring使用ThreadLocal技术来处理这些问题
  3. 用Redis构建分布式锁-RedLock(真分布)
  4. IntelliJ IDEA 发布最新版本13.0.1
  5. 解决eclipseMavne的web项目debug时没有源码
  6. VS对路径的访问被拒绝
  7. 学习笔记之 prim算法和kruskal算法
  8. .Net Install类的Install、Commit等事件触发顺序
  9. [BS] 小知识点总结-01
  10. 动作-CCActionInterval之CCGridAction家族
  11. Oracle 中按条件过滤重复记录
  12. 学习JVM--垃圾回收(二)GC收集器
  13. Ubuntu离线安装VSCode(附带前期准备工作)
  14. BZOJ 5093[Lydsy1711月赛]图的价值 线性做法
  15. webpos登录不上
  16. 在微信下载app引导页代码
  17. Redis学习--Redis的安装与Jedis的简单使用
  18. TensorFlow模型加载与保存
  19. echarts属性的设置(完整大全)
  20. February 10th, 2018 Week 6th Saturday

热门文章

  1. 【移动开发】SharedPreferences的兼容版本
  2. Android4.4.2KK竖屏强制更改为横屏的初步简略方案
  3. 利用OpenCV的人脸检测给头像带上圣诞帽
  4. 【一天一道LeetCode】#111. Minimum Depth of Binary Tree
  5. Linux Debugging(七): 使用反汇编理解动态库函数调用方式GOT/PLT
  6. git常用技巧
  7. ubuntu14下mysql忘记密码的处理
  8. Chapter 2 User Authentication, Authorization, and Security(11):在已还原的数据库中修正登录映射错误
  9. spring4泛型初探----一个小例子
  10. Linux Android 多点触摸协议 原文出自【比特网】,转载请保留原文链接:http://soft.chinabyte.com/os/71/12306571.shtml