第九章、filter_horizontal优化和kingadmin删除功能

9.1.filter_horizontal优化

(1)添加Choose ALL 和Remove ALL

table_obj_change_component.html

js代码

function MoveAllElements(from_id,to_id) {

        console.log( $("#"+from_id).children())
$("#"+from_id).children().each(function () {
MoveSelectedOption(this,to_id);
})
}

(2)添加过滤框功能

js代码

function FuzzSearch(ele){

        console.log($(ele).val())
var search_text = $(ele).val().toUpperCase();
$(ele).next().children().each(function () {
if ( $(this).text().toUpperCase().search(search_text) != -1){
$(this).show();
}else {
$(this).hide();
}
}) }

 9.2.kingadmin对象删除功能开发

(1)kingadmin/urls.py

#删除
url(r'^(\w+)/(\w+)/(\d+)/delete/$', views.table_obj_delete,name='obj_delete'),

(2) table_obj_change_component.html

(3)kingamdin/views.py

def table_obj_delete(request,app_name,model_name,obj_id):
'''删除功能'''
admin_class = site.enable_admins[app_name][model_name]
obj = admin_class.model.objects.get(id=obj_id) return render(request,'kingadmin/table_obj_delete.html',locals())

(4)新建table_obj_delete.html

{#kingadmin/templates/kingadmin/table_obj_delete.html#}

{% extends 'kingadmin/index.html' %}
{% load kingadmin_tags %} {% block right-content-container %}
<h2 class="page-header">{% get_model_name admin_class %}</h2>
<h4 class="page-header">删除{{ form_obj.instance }}</h4> <div>
delete
{{ obj }} </div> {% endblock %}

删除的时候显示要被删除对象的所有关联对象

(5)kingadmin_tags.py

@register.simple_tag
def display_all_related_objs(obj):
"""
显示要被删除对象的所有关联对象
"""
ele = "<ul><b style='color:red'>%s</b>" % obj #获取所有反向关联的对象
for reversed_fk_obj in obj._meta.related_objects:
#获取所有反向关联对象的表名
related_table_name = reversed_fk_obj.name
# 通过表名反向查所有关联的数据
related_lookup_key = "%s_set" % related_table_name
related_objs = getattr(obj,related_lookup_key).all()
ele += "<li>%s<ul> "% related_table_name
#get_internal_type(),获取字段的类型,如果是m2m,就不需要深入查找
if reversed_fk_obj.get_internal_type() == "ManyToManyField": # 不需要深入查找
for i in related_objs:
ele += "<li><a href='/kingadmin/%s/%s/%s/change/'>%s</a> 记录里与[%s]相关的的数据将被删除</li>" \
% (i._meta.app_label,i._meta.model_name,i.id,i,obj)
#如果不是m2m,就递归查找所有关联的数据
else:
for i in related_objs:
ele += "<li><a href='/kingadmin/%s/%s/%s/change/'>%s</a></li>" %(i._meta.app_label,
i._meta.model_name,
i.id,i)
#递归查找
ele += display_all_related_objs(i) ele += "</ul></li>" ele += "</ul>" return ele

(6)table_obj_change_component.html

(7)table_obj_delete.html

{#kingadmin/templates/kingadmin/table_obj_delete.html#}

{% extends 'kingadmin/index.html' %}
{% load kingadmin_tags %} {% block right-content-container %}
<h2 class="page-header">{% get_model_name admin_class %}</h2>
<h3 class="page-header alert alert-danger">你确定要删除吗?{{ form_obj.instance }}</h3> <div>
delete {{ obj }} {% display_all_related_objs obj as all_related_obj_eles %}
{{ all_related_obj_eles|safe }} <form method="post">
{% csrf_token %}
<input type="submit" class="btn btn-danger" value="确认删除">
<a class="btn btn-info" >返回</a> </form>
</div>
{% endblock %}

删除的时候会提示所有关联对象

修改分页(设置默认显示多少条数据)

kingamdin/admin_base.py

class BaseKingAdmin(object):

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

kingadmin/views.py

CRM客户关系管理系统(九)的更多相关文章

  1. Django CRM客户关系管理系统

    CRM需求分析 随着信息化时代带来的科技创新,CRM客户关系管理系统带来的效益在已经成为很多企业提高竞争优势的一分部,CRM客户关系管理系统将企业管理和客户关系管理集成到统一的平台,其系统功能主要体现 ...

  2. CRM 客户关系管理系统

    CRM(Customer Relationship Manager)客户关系管理系统 企业为提高核心竞争力,利用相应的信息技术以及互联网技术协调企业与顾客间在销售.营销和服务上的交互,从而提升其管理方 ...

  3. CRM客户关系管理系统 北京易信软科信息技术有限公司

    北京易信软科信息技术有限公司 推出大型erp系统,库存管理系统,客户关系管理系统,车辆登记管理系统,员工管理系统,采购管理系统,销售管理系统,为您的企业提供最优质的产品服务 北京易信软科您可信赖的北京 ...

  4. CRM客户关系管理系统-需求概设和详设

    大概设计 大概设计就是对需求进行一个整体性分析,把需要实现的功能都列出来,对于客户关系管理系统,我们需要从角色出发,从而确定有哪些需求,最好是画个思维导图 首先我们是为培训学校这么一个场景来开发的,所 ...

  5. CRM客户关系管理系统有哪些优缺点?

    CRM系统不仅仅是一种技术,也是面向企业的客户管理系统.客户关系管理软件可以帮助销售员快速地找到客户信息,帮助销售员跟踪客户直到完成订单.为提高企业销售效率,CRM被越来越多的企业所采用. 那么,作为 ...

  6. CRM客户关系管理系统(一)

    第一章.CRM介绍和开发流程 1.1.CRM简介 客户关系管理(CRM) 客户关系管理(customer relationship management)的定义是:企业为提高核心竞争力,利用相应的信息 ...

  7. Django项目:CRM(客户关系管理系统)--84--74PerfectCRM实现CRM权限和权限组限制访问URL

    #models.py # ————————01PerfectCRM基本配置ADMIN———————— from django.db import models # Create your models ...

  8. Django项目:CRM(客户关系管理系统)--85--75PerfectCRM实现CRM扩展权限

    # sales_urls.py # ————————47PerfectCRM实现CRM客户报名流程———————— from django.conf.urls import url from bpm. ...

  9. Django项目:CRM(客户关系管理系统)--82--72PerfectCRM实现CRM动态菜单和角色

    #models.py # ————————01PerfectCRM基本配置ADMIN———————— from django.db import models # Create your models ...

  10. Django项目:CRM(客户关系管理系统)--73--63PerfectCRM实现CRM讲师下载作业

    # teacher_urls.py # ————————62PerfectCRM实现CRM讲师讲课记录———————— from django.conf.urls import url from bp ...

随机推荐

  1. Python代码运行助手

    将下述demo文件保存下来,比如存为learning.py 然后运行,如果出现: Ready for Python code on port 39093... 则说明成功了. demo #!/usr/ ...

  2. Cocos2d中update与fixedUpdate的区别(六)

    它如何工作呢? update:和fixedUpdate:方法实际这样工作. Cocos2D将从iOS接口中取得时间间隔(delta)在你的游戏代码执行期间,并且检查fixedUpdate:方法在间隔期 ...

  3. 《java入门第一季》之面向对象(继承)

    /* 继承的注意事项: A:子类只能继承父类所有(非私有)的成员(成员方法和成员变量),私有的变量和方法没法继承 B:子类(不能)继承父类的(构造方法),但是可以通过super关键字去访问父类构造方法 ...

  4. android中的回调

    1.引子 android中的回调最经典的就是点击事件设置监听(一般通过switch(v.getId()))这里写个最基本的 btn_rigister.setOnClickListener(new Vi ...

  5. Unix - 文件中构成一个空洞的分析

    lseek函数显示地为一个打开文件设置偏移量,文件偏移量可以大于文件的当前长度,在这种情况下,对该文件的下一次写将加长该文件,并在文件中构成一个空洞,这一点是允许的.位于文件中但没有写过的字节都被读为 ...

  6. mysql进阶(十六)常见问题汇总

    mysql进阶(十六)常见问题汇总 MySQL视图学习: http://www.itokit.com/2011/0908/67848.html 执行删除操作时,出现如下错误提示: 出现以上问题的原因是 ...

  7. 苹果新的编程语言 Swift 语言进阶(十四)--扩展

    扩展是为一个已经存在的类.结构.枚举类型添加新功能的一种方式,包括为不能存取源代码的那些已经存在的类型添加功能. 扩展类似于Objective-C语言中的类别,与类别不同的是Swift语言的扩展没有名 ...

  8. Android特效专辑(五)——自定义圆形头像和仿MIUI卸载动画—粒子爆炸

    Android特效专辑(五)--自定义圆形头像和仿MIUI卸载动画-粒子爆炸 好的,各位亲爱的朋友,今天讲的特效还是比较炫的,首先,我们会讲一个自定义圆形的imageView,接着,我们会来实现粒子爆 ...

  9. Android源代码目录组成介绍-android学习之旅(97)

    android的主要源代码组成如下: Kernel:Android Linux 内核2.6 bionic:Android 标准C运行支持库 bootloader:内核加载器参考 build:Andro ...

  10. rails应用ajax之二:使用rails自身支持

    考虑另一种情况: 1. 页面上半部分显示当前的所有用户,页面下半部分是输入新用户的界面: 2. 每当输入新用户时,页面上半部分会动态更新新加用户的内容: 我们还是用ajax实现,不过这次用rails内 ...