CRM手记-8 | Django

# 搜索|在已经过滤的条件之下做搜索;
# 在查询语句中,用"包含"来做模糊搜索:
#     model_class.objects.filter(contact__contains=‘33‘)
# 涉及到Q的操作;这里通过Q这个类来实现;
    # table_obj_list.html
        <form>
            <input type="search" name="_q">
            <input type="submit" value="搜索">
        </form>
    # views.py
        def get_filter_result(request,querysets):
            filter_conditions = {}
            for key,val in request.GET.items():
                # 分页,排序,搜索的参数对过滤没有影响;
                if key in (‘page‘,‘_o‘,‘_q‘):continue
                ...
# 搜索完之后再排序;
    # views.py
        @login_required
        def table_obj_list(request,app_name,model_name):
            ...
            # 4.返回搜索结果
            #   admin_class获知所有可以搜索的条件;
            #   request参数获知当前搜索条件,改变搜索结果querysets;
            querysets = get_searched_result(request,querysets,admin_class)
            # 2.排序后端数据查询
            ...
            # 3.分页
            ...
            return render(request,‘kingadmin/table_obj_list.html‘, {
                ‘querysets‘:querysets,
                ‘admin_class‘:admin_class,
                ‘current_page‘:current_page,
                ‘current_order_field‘:current_order_field
            })

        from django.db.models import Q
        # 获取搜索结果
        def get_searched_result(request,querysets,admin_class):
            search_key = request.GET.get(‘_q‘)
            if search_key:
                # 1.实例化Q
                q = Q()
                # 2.确定逻辑符号
                q.connector = ‘OR‘
                for search_field in admin_class.search_fields:
                    # 3.添加条件
                    #   append()传入一个元组,字符串格式化跟着元组表示传入多个参数,没有元组表示生成多个字符串;
                    q.children.append(("%s__contains"%search_field,search_key))
                # 4.q查询
                return querysets.filter(q)
            return querysets

# 在过滤条件下搜索
    # 添加隐藏的搜索框将过滤条件在搜索的表单中一并提交;
    # table_obj_list.html
        <form>
            <input type="search" name="_q">
            <!-- 将当前过滤条件通过表单提交 -->
            {% for k,v in admin_class.filter_condtions.items %}
                <input type="hidden" name={{ k }} value={{ v }}>
            {% endfor %}
            <input type="submit" value="搜索">
        </form>

# 添加value显示正在搜索的条件
    # 在搜索查询之后,获取url中的参数值,传递到前端隐藏标签的value中;
    # views.py
        @login_required
        def table_obj_list(request,app_name,model_name):
            ...
            # 4.返回搜索结果
            #   admin_class获知所有可以搜索的条件;
            #   request参数获知当前搜索条件,改变搜索结果querysets;
            querysets = get_searched_result(request,querysets,admin_class)
            # 4.1 显示正在搜索的条件
            admin_class.search_key = request.GET.get(‘_q‘,‘‘)
            ...
    # table_obj_list.html
        <input type="search" name="_q" value="{{ admin_class.search_key }}">

原文地址:https://www.cnblogs.com/pymkl/p/8322104.html

时间: 2024-10-13 00:35:24

CRM手记-8 | Django的相关文章

CRM手记-2 | Django

#################################### kingadmin ###################################### # 需要做到的效果:点击客户库,出现所有客户信息,以及增删改查|多条件过滤|搜索|排序等功能: # 后台添加相应数量的客户: # 给admin中客户信息显示样式做自定制,包括过滤等: # admin.py class CustomerAdmin(admin.ModelAdmin): list_display = ['name'

CRM手记- 12 | Django

# 4.删除 # 在修改记录页面左下角添加一个删除按钮,一个链接,跳转至一个提示删除内容的页面,确认删除: # 关联删除,删除记录同时也删除外键的关联表; # table_obj_common.html <div class="form-group"> <div class="col-sm-10"> <a href="{% table_obj_delete app_name model_name form_obj.instan

CRM手记-5 | Django

# 过滤补充; # 点击userprofile表报错; # 因为当没有自定义admin_class时,默认使用的是BaseKingAdmin: # 所以,BaseKingAdmin需要做一些默认的配置; # admin_base.py class BaseKingAdmin(object): list_display = [] list_filter = [] search_fields = [] # 此时列表为空,build_table_row()的将没有返回值,前端显示空; # 做一个判断:

CRM手记-6 | Django

# 排序功能开发: # 单条件排序; # 在表头每个字段上都添加a标签,点击降序,记住这次操作,再次点击反序(用箭头图标展示); # table_obj_list.html <th><a href="?_o=">{{ column }}</a></th> # _0等于字段的索引,如果为负,反序; # 所以可以通过模板标签forloop.count0来取; <th><a href="?_o={{forloop.c

django--项目创建

一.django 框架初探 (心蓝1202) 1 web框架介绍 wsgi web service gate interface web框架就是讲web应用开发中通用的部门抽象出来,形成一个框架,再去实现我们特定的功能 django 全能型 tornado 优秀的异步框架 web.py 小区的web框架 flask 优秀的轻量级的web框架 设计模式:mtv m models moxing t template 模板 v view 视图 2.django框架的介绍 1.环境搭建,django的安

Django之路 - 项目实战之&lt;教育行业CRM开发&gt;

本节内容 业务痛点分析 项目需求讨论 使用场景分析 表结构设计 业务痛点分析 我2013年刚加入老男孩教育的时候,学校就一间教室,2个招生老师,招了学生后,招生老师就在自己的excel表里记录一下,每月算工资时,就按这个表来统计招生提成, 后来学校大了点,教室变成了3间,招生老师变成了4个人,招的学生也开始多了起来,不过大家依然是招了学生就纪录在自己的excel里,但问题开始出现了,我们的招生多是通过网络qq聊天在线咨询,好多客户需要聊很久才能转化成学员,经常会出现一个客户跟一个招生老师聊过后,

Django CRM学员系统项目

项目需求: 1.分讲师\学员\课程顾问角色,2.学员可以属于多个班级,学员成绩按课程分别统计3.每个班级至少包含一个或多个讲师4.一个学员要有状态转化的过程 ,比如未报名前,报名后,毕业老学员5.客户要有咨询纪录, 后续的定期跟踪纪录也要保存6.每个学员的所有上课出勤情况\学习成绩都要保存7.学校可以有分校区,默认每个校区的员工只能查看和管理自己校区的学员8.客户咨询要区分来源 开发一个项目 首选就是先设计好表结构 表结构设计完成 后面写代码就比较轻松了 我这边创建的项目是crm 项目名为app

Django CRM客户关系管理系统

CRM需求分析 随着信息化时代带来的科技创新,CRM客户关系管理系统带来的效益在已经成为很多企业提高竞争优势的一分部,CRM客户关系管理系统将企业管理和客户关系管理集成到统一的平台,其系统功能主要体现在企业与客户之间的业务和企业内部之前部门之间的业务.因此CRM客户关系管理系统不但可以记录企业自内部信息,对于客户信息存储也是可以做到的,其中还涉及市场竞争对手的情报资料,还包括了企业进行营销.销售及支持服务所需的各种数据. 功能实现 (1)建议统一的信息编码系统; (2)设计能够良好反映事物特性的

Django项目:CRM(客户关系管理系统)--40--32PerfectCRM实现King_admin添加不进行限制

1 # forms.py 2 # --------19PerfectCRM实现King_admin数据修改-------- 3 from django import forms 4 from crm import models 5 6 # class CustomerModelForm(forms.ModelForm): 7 # class Meta: #调用内置方法 8 # model = models.Customer #获取表名 9 # fields = "__all__" #字