CRM客户关系管理系统(六)
第六章、排序和搜索功能开发
6.1.排序功能开发
(1)kingadmin_tags.py
@register.simple_tag
def get_sorted_column(column,sorted_column,forloop):
'''排序'''
if column in sorted_column: #如果这一列被排序了
#要判断上一次排序是按什么顺序,本次取反
last_sort_index = sorted_column[column]
if last_sort_index.startswith('-'):
#利用切片,去掉‘-’
this_time_sort_index = last_sort_index.strip('-')
else:
#加上 '-'
this_time_sort_index = '-%s'% last_sort_index
return this_time_sort_index
else:
return forloop
(2)kingadmin/views.py
def get_orderby_result(request,querysets,admin_class):
'''排序''' current_ordered_column = {}
#通过前端获取到要排序的字段的索引(是个字符串)
orderby_index = request.GET.get('_o')
if orderby_index:
#通过索引找到要排序的字段,因为索引有可能是负数也有可能是负数,要用绝对值,否则负值的时候取到了其它字段了
orderby_key = admin_class.list_display[abs(int(orderby_index))]
#记录下当前是按什么排序字段的
current_ordered_column[orderby_key] = orderby_index
if orderby_index.startswith('-'):
orderby_key = '-' + orderby_key return querysets.order_by(orderby_key),current_ordered_column
else:
return querysets,current_ordered_column
(3)table_obj_list.html
<th><a href="?_o={% get_sorted_column column sorted_column forloop.counter0 %}">{{ column }}</a></th>
(4)添加正序倒序的图标
Boorstrap组件:https://v3.bootcss.com/components/
把bootstrap的fonts静态文件放到kingadmin/staic/fonts下面
(5)kingadmin_tags.py
@register.simple_tag
def render_sorted_arrow(column,sorted_column):
'''排序的图标''' if column in sorted_column:
last_sort_index = sorted_column[column]
if last_sort_index.startswith('-'):
arrow_direction = 'bottom' else:
arrow_direction = 'top'
ele = '''<span class="glyphicon glyphicon-triangle-%s" aria-hidden="true"></span>'''% arrow_direction
return mark_safe(ele) return ''
(6)table_obj_list.html
<th><a href="?_o={% get_sorted_column column sorted_column forloop.counter0 %}">
{{ column }}{% render_sorted_arrow column sorted_column %}
</a></th>
效果:
6.2.分页、排序和过滤组合使用
(1)排序和过滤组合
table_obj_list.html
(2)kingamdin_tags.py
@register.simple_tag
def render_filtered_args(admin_class):
'''拼接过滤的字段'''
if admin_class.filter_conditions:
ele = ''
for k,v in admin_class.filter_conditions.items():
ele += '&%s=%s'%(k,v)
return mark_safe(ele)
else:
return ''
现在过滤和排序的组合没有问题,但是分页还没有组合到一起
(3)过滤和分页组合
table_obj_list.html
kingadmin_tags.py
def render_paginator先添加一个参数admin_class
(4)分页、排序、过滤组合
table_obj_list.py
kingadmin_tag.py
@register.simple_tag
def get_current_sorted_column_index(sorted_column):
#三元运算,如果为True执行左边的,为False,执行右边的('')
return list(sorted_column.values())[0] if sorted_column else ''
table_obj_list.py
kingadmin_tag.py
现在排序、过滤和分页组合就没有问题了
6.3.搜索功能开发
全局搜索
(1)table_obj_list.html
(2)kingadmin/views.py
from django.db.models import Q def get_searched_result(request,querysets,admin_class):
'''搜索''' search_key = request.GET.get('_q')
if search_key:
q = Q()
q.connector = 'OR' for search_field in admin_class.search_fields:
q.children.append(("%s__contains"%search_field,search_key)) return querysets.filter(q)
return querysets
现在实现的是全局搜索功能(不能过滤的同时搜索), 下面添加 过滤+搜索的功能
过滤+搜索
只需要添加一个隐藏标签就可以
kingadmin/vies.py
table_obj_list.html
效果:
功能优化
(1)用户并不知道可以通过哪些字段去搜索,在搜索框里添加提示(placeholder)
<form action="">
<input type="search" placeholder="{% for s in admin_class.search_fields %}{{ s }},{% endfor %}" name="_q" value="{{ admin_class.search_key }}">
<input type="submit" value="Search">
{% for k,v in admin_class.filter_conditions.items %}
<input type="hidden" name="{{ k }}" value="{{ v }}">
{% endfor %}
</form>
(2)添加Bootstrap样式
过滤字段提示和美化
table_obj_list.html
“过滤”按钮
kingadmin_tags.py
过滤字段提示+添加框的美化样式
末尾要加</div>闭合
显示效果:
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(客户关系管理系统)--58--48PerfectCRM实现CRM客户报名流程学生合同
# sales_urls.py # ————————47PerfectCRM实现CRM客户报名流程———————— from django.conf.urls import url from bpm. ...
- CRM客户关系管理系统有哪些优缺点?
CRM系统不仅仅是一种技术,也是面向企业的客户管理系统.客户关系管理软件可以帮助销售员快速地找到客户信息,帮助销售员跟踪客户直到完成订单.为提高企业销售效率,CRM被越来越多的企业所采用. 那么,作为 ...
- CRM客户关系管理系统(一)
第一章.CRM介绍和开发流程 1.1.CRM简介 客户关系管理(CRM) 客户关系管理(customer relationship management)的定义是:企业为提高核心竞争力,利用相应的信息 ...
- Django项目:CRM(客户关系管理系统)--84--74PerfectCRM实现CRM权限和权限组限制访问URL
#models.py # ————————01PerfectCRM基本配置ADMIN———————— from django.db import models # Create your models ...
- Django项目:CRM(客户关系管理系统)--85--75PerfectCRM实现CRM扩展权限
# sales_urls.py # ————————47PerfectCRM实现CRM客户报名流程———————— from django.conf.urls import url from bpm. ...
随机推荐
- SpringMVC(九):SpringMVC 处理输出模型数据之ModelAndView
Spring MVC提供了以下几种途径输出模型数据: 1)ModelAndView:处理方法返回值类型为ModelAndView时,方法体即可通过该对象添加模型数据: 2)Map及Model:处理方法 ...
- POJ-1700 Crossing River---过河问题(贪心)
题目链接: https://vjudge.net/problem/POJ-1700 题目大意: 有N个人要渡河,但是只有一艘船,船上每次最多只能载两个人,渡河的速度由两个人中较慢的那个决定,小船来回载 ...
- Django REST framework+Vue 打造生鲜超市(八)
九.个人中心功能开发 9.1.drf的api文档自动生成和 (1) url #drf文档,title自定义 path('docs',include_docs_urls(title='仙剑奇侠传')), ...
- APP的宣传方式有哪些
APP应用已经成为了互联网不可缺少的话题,事实上,开发一款移动APP的成本不是很高,但是怎样以最低的成本得到最大的推广效果,这是企业和开发者都很关心的一个问题.下面,我们来探讨一下这个问题. 1.一款 ...
- [LeetCode] License Key Formatting 注册码格式化
Now you are given a string S, which represents a software license key which we would like to format. ...
- 将 Net 项目升级 Core项目经验:(二)修复迁移后Net Standard项目中的错误
修复迁移后Net Standard项目中的错误 接上一章,项目编译结果如下: 解决依赖dll引用 在Net Framework项目的引用如下: 各引用和作用: log4net(1.10.0.0) 用于 ...
- 关于装双系统Ubantu16.04+Win10引导问题
1.装完双系统,必定会遇到时间不一致的问题解决问题如下 sudo apt-get install ntpdate sudo ntpdate time.windows.com sudo hwclock ...
- 深入理解事件(Event)
前言 在前一篇文章中讲到了Event 发布与订阅(一) 里面用到了事件来实现一些发布与订阅,当时对事件及其委托理解的还不是太深入,可能在使用上有点捉急.这篇来好好讲讲事件,以及通过一些小DEMO来加深 ...
- ●BZOJ 4541 [Hnoi2016]矿区
题链: http://www.lydsy.com/JudgeOnline/problem.php?id=4541 题解: 平面图的对偶图,dfs树 平面图的对偶图的求法: 把所有双向边拆为两条互为反向 ...
- [bzoj4763]雪辉&[bzoj4812][Ynoi2017]由乃打扑克
来自FallDream的博客,未经允许,请勿转载,谢谢. cut掉部分题面. 给一个n个点的树,点有点权,有m次询问,每次询问多条链的并有多少种不同的点权以及它的mex mex就是一个集合中最小的没有 ...