专栏首页Python 学习day76-<项目>-模糊查询和分页保留查询条件
原创

day76-<项目>-模糊查询和分页保留查询条件

1.设置前端免校验的关键字novalidate

设置之后前端对form表单的校验将全部失效,一般仅仅用于调试

2.数据库字段样式是checkbox的时候要修改样式和'__all__'的使用

3.instance关键字高效实现修改功能

4.正则添加 url,再次注意

括号啊

5.form-inline 约束 form-control 的大小

未加 form-inline 之前
加了 form-inline 之后

6.模糊查询

step1:定制查询方法,这个方法将前台穿的关键字拼接,并return一个返回值

step2:在请求里面调用方法,根据业务传入对应字段列表,将返回值(查询语句)放入filter

class CustomerList(View):
    def get(self, request):
        print('当前用户{}'.format(self.request.user))
        q = self.search_condition(['qq', 'name', 'last_consult_date'])  # 做查询使用
        if request.path_info == reverse('crm:customer_list'):
            all_customer = models.Customer.objects.filter(q, consultant=None)  # 默认展示公户
        else:
            all_customer = models.Customer.objects.filter(q, consultant=request.user)  # 默认展示公户

        """
        <QueryDict: {'query': ['alex']}>
        将查询参数复制一份, 传入分页  
        """
        query_params = request.GET.copy()
        pag_obj = Pagination(request, len(all_customer, ), query_params=query_params, each_page_show_number=2)

        return render(request, 'crm/costumer_list.html',
                      # 分页
                      {'all_customer': all_customer[pag_obj.each_page_start_number:pag_obj.each_page_end_number],
                       'page_html': pag_obj.html_str
                       })

    # 定制自己的查询
    def search_condition(self, query_list):  # 参数接收一个查询列表,只要在列表里面的都被查询

        query = self.request.GET.get('query', '')  # 从form 表单里面找到 query 关键字
        print('本次搜索关键字是{}'.format(query))
        query_obj = Q()  # 生成 Q 对象
        query_obj.connector = 'OR'  # or 或的连接关系
        for i in query_list:
            query_obj.children.append(Q(('{}__contains'.format(i), query)))  # 固定格式

        return query_obj

        # 实际的拼接效果如下,是查询的另一种写法.
        # Q(('qq__contains', query)) | Q(('name__contains', query))

        # 这是传统的写法
        # Q( Q(qq__contains=query) |  Q(name__contains=query) )

7.分页查询时候保留筛选条件

step1:copy方法,传入Pagination类里面

step2:初始化属性(这个就不说了),设置_mutable=True

设置_mutable才可以对它进行修改

step3:实现

今天我感觉已经快要gg了,我是不是不行了,头眼昏花...

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • day68-Django进阶-ORM操作(聚合函数)+cookie+session

    少年包青菜
  • day66-Django进阶-Django路由系统介绍

    c.在模板中,注意:name 可以在任意的模板中被使用,这个 HTML 文件是随便搞得一个!!

    少年包青菜
  • day79-<权限组件>-初识权限

    少年包青菜
  • (2)打鸡儿教你Vue.js

    钩子函数 - beforeCreate() - 实例初始化之后 钩子函数 - created() - 发送请求获取数据 钩子函数 - beforeMount...

    达达前端
  • [数据分析工具] Pandas 功能介绍(二)

    我们需要看第一季度的数据是怎样的,就需要使用条件过滤

    数据分析
  • 超火动态价格面积图:手把手教你!

    近日,公众号推出了一篇名为《超火动态排序图:代码不到40行,手把手教你!》的文章,反向十分强烈。各大公众号进行的了转载,知乎也是有400+的点赞。

    量化投资与机器学习微信公众号
  • 【Android-30秒】AndroidStudio快捷键指南(一)——Editor Actions篇

    【每天Android技巧30秒,效率提高30倍(手动狗头)】 所谓工欲善其事。作为一名Android开发者,AndroidStudio是我们日常工作中必备的开发...

    AiLo
  • IDEA 打war包

    Build------>build artifacts----->xxxxx.war

    week
  • 云开发校园技术工坊怎么样,听听上届学长学姐怎么说!丨校园技术工坊

    “ 云开发校园技术工坊值不值得参加,听听上届学长学姐怎么说!文末福利! ” 8月29日,云开发校园技术工坊活动正式启动, 校园执行官也于同期开始招募啦! (活...

    腾讯高校合作
  • 利用python回顾统计学中的基础概念(全)

      描述性统计,就是从总体数据中提取变量的主要信息(总和、均值等),从而从总体层面上,对数据进行统计性描述。

    朱小五

扫码关注云+社区

领取腾讯云代金券