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

2019-10-18 17:40:22 浏览数 (1)

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

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

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

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

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

括号啊括号啊

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

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

6.模糊查询

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

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

代码语言:javascript复制
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才可以对它进行修改设置_mutable才可以对它进行修改

step3:实现

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

0 人点赞