• stark组件开发之关键搜索


    - 模糊搜索:
      在页面生成一个表单。  以get 方式, 将数据提交到。当前查看页面。 后台接收数据,然后进行筛选过滤。

    着个也需要,用户自定制!
       定义一个  search_list  这个值,默认为空。 页面进行判断,为空就不显示。 搜索框!
    如果,用户 定义了这个列表, 那么就显示!

    class StartHandler(object):
      ..........
      search_list
    = [] # 方便,用户自己定制。关键字搜索的条件,和如果用户不配置,页面不显示搜索框   def get_search_list(self):   return self.search_list   # ##################3. 获取排序,和, 模糊搜索的条件######################
      from django.db.models import Q, F # 用于构造复杂的 搜索条件
      order_list = self.get_ordered_list() # 排序方式 默认 使用 id 进行正向排序   search_list = self.get_search_list() # 搜索的条件 ["name_contains", "email"]   '''     1. 如果 search_list 为空, 则不显示 搜索框     2. 获取用户输入的 关键字     3. 构造搜索条件   '''   search_value = self.request.GET.get("q", "") # 获取用户发送过来的关键字,如果没有 q 这个参数。 就返回 None   conn = Q()   conn.connector = "OR" # 让添加进来的条件, 做 or 判断   if search_value: # 接收到了用户的搜索,才进行模糊查询。 否则啥都不干   for item in search_list:   conn.children.append((item, search_value))
      ............   
    return render(request, "stark/changelist.html", {"header_list": header_list, "data_list": data_list, "body_list": body_list, "pager": pager, "add_btn": add_btn, "search_list": search_list, "search_value": search_value, "action_dict": action_dict})

    子类中, 由用户自己定制:

    class UserInfoHandler(StartHandler):
      ......
        search_list = ["name_contains"]  # 如果这里不设置的话, 就不显示搜索框
       def get_search_list(self):
         '''重写该方法,可以进行对用户 权限的判断。 从而决定该用户是否, 有搜索的权限'''

    接下来就是一个 ,模糊搜索了: 先看一了 例子!:

            from django.db.models import Q, F  # 用于构造复杂的 搜索条件
            conn = Q()
            conn.connector = "OR"  # 让添加进来的条件, 做 or 判断
            conn.children.append(("name__contains", "lijie"))
            conn.children.append(("email", "lijie"))
            conn.children.append(("id__gt", 5))
            self.model_class.objects.filter(conn)  # 这样就可以根据添加进 Q 的条件, 按照 or 的方式。在数据库查询!

    ORM  无法进行,复杂的搜索条件。 所以使用 django 内置的  Q 方法来做这件事!

    所以重点还是  子类中需要自定制的 search_list = ["name_contains"]  这里才是决定了。 前端更够查询到的东西。

    但是,这里还是, 定死了的。  如果想要更加的灵活。 以后再说:
    先看看。 整体代码吧!

  • 相关阅读:
    实现一个与内容合二为一的ActionBar动画效果
    hdoj 1506&&1505(City Game) dp
    remine chart2安装
    zoom的学习
    海哥:T2C时代的到来了,那么什么叫T2C?
    minhash算法
    动态创建按钮的JS
    socket编程在windows和linux下的区别
    http staus汇总
    MySQL HINT:Straight_JOIN
  • 原文地址:https://www.cnblogs.com/chengege/p/10742395.html
Copyright © 2020-2023  润新知