zoukankan      html  css  js  c++  java
  • python+Django CRM客户关系管理系统开发(三)--过滤功能开发

    一、过滤功能开发

    前边开发了admin首页,及数据展示页,接下来开发数据过滤页面。

    二、admin过滤功能实现分析

    在admin.py中添加list_filter后,即可在页面上看到过滤功能

     页面上过滤功能展示:

    三、功能实现

    1、在自定义展示中添加list_filter

    2、这些过滤项也是需要由后端返回给前端使用,因此在自定义tag里生成,然后返回

    先在页面上显示一下过滤的项目,因为过滤就是搜索,因此放到form里,用来提交比较方便:

    在table_obj_list页面上加一个form:

     页面上就可以显示过滤项:

     3、由于每个过滤项都不一样,因此需要动态生成过滤项,这里用下拉框的方式,动态生成下拉框。还是在自定义tag里生成,然后返回给前端。

    from crm import models
    b = models.CustomerInfo._meta.get_field('status')
    b.choices # 输出结果为((0,'未报名'),(1,,'已报名'),(2,'已退学'))
    b.get_choices() #输出结果为[('','-----'),(0,'未报名'),(1,,'已报名'),(2,'已退学')]

    目标就是把这个b.get_choices()动态生成到select框里

     页面显示效果如图:

    因为时间项是没有预置下拉选项的,目前如果在list_filter中添加date,会报错,想显示时间过滤项,进行如下修改:

    在list_filter中添加date:list_filter = ['contact_type','source','status','date']

    对build_filter_ele进行修改,自己添加几个时间过滤项:

     这么写的话发现报错,是因为date没有选项,目前是我们从后台自己写几个时间段选项,因此需要捕获一下这个错误:

    修改build_filter_ele:

    此时页面显示:

     四、目前页面已经显示了过滤项,但是还不能真正的过滤,接下来开发过滤功能。

    具体实现过程是,选中某项后,选中的项作为查询条件,传递给后台进行查询。

    首先获取过滤条件,需要在视图函数中获取,然后作为查询条件:

     

    其次,选中的项,前端应该变为selected,因此修改这部分代码:

    此时,可以正常过滤:

     但是,通过时间搜索时,却不生效,提示时间 格式不对:

     

    经过修改,不报错,但是发现查不出结果,原因是搜索时是等于=,应该是>=,接着修改:

    修改代码如下:

     然后过滤结果如下图,正常过滤:

     

    
    
    
  • 相关阅读:
    2016 Multi-University Training Contest 1 solutions BY HIT
    Unicode 码表
    用 lambda 表达式 对 List 进行排序
    Linux的sed命令介绍
    Linux下的NTP服务搭建
    Linux网络配置(ip命令及配置文件)
    Linux的bash脚本编程(if语句和循环语句)
    Linux新手必须掌握的命令(2)
    Linux的文件查找
    bash中的变量
  • 原文地址:https://www.cnblogs.com/realizetomoney/p/13871180.html
Copyright © 2011-2022 走看看