Ⅰ 排序
当数据量增多,对于数据 我们应该能够指定如何排序的。且此功能应该是可以给用户自定义进行配置的。
这是StarkHandler类的方法
1 order_list = [] 2 def get_order_list(self): 3 return self.order_list or ['id'] #默认是按照id排序
Combine▼
list_view下的排序功能:
1 order_list = self.get_order_list() 2 3 #组合搜索条件字典 4 search_dict = self.get_search_group_condition(request) 5 6 #自定义方法筛选后的结果 7 queryset = self.get_queryset(**kwargs) 8 9 queryset = queryset.filter(conn).filter(**search_dict).all().order_by(*order_list)
用户使用配置只需在子类Handler写上
1 order_list = ['-id','name'] #优先根据-id排序,完后再根据name排序
Ⅱ 模糊搜索
实现思路:
在页面设置form表单,搜索:以Get形式提交到后台。后台获取数据然后进行筛选过滤。
后端获取关键字之后,根据定义的列进行查找(多列可以按照 "或" 进行查询)
同样,预留勾子,功能可以给用户自定义进行配置的。
这是StarkHandler类的方法
1 search_list = [] #为空的话,模板默认不显示搜索按钮 2 def get_search_list(self): 3 return self.search_list
Combine▼
list_view下的模糊搜索功能:
1 search_list = self.get_search_list() 2 search_value = request.GET.get('q','') 3 4 from django.db.models import Q #实现“或”查询 5 conn = Q() 6 conn.connector = 'OR' 7 8 if search_value: 9 #Q,用于构造复杂的ORM查询条件 10 for item in search_list: 11 conn.children.append((item,search_value))
即为上面的 queryset = queryset.filter(conn).filter(**search_dict).all().order_by(*order_list)
用户使用配置只需在子类Handler写上
1 search_list = ['name'] 2 search_list = ['name__contains','email__contains']
Ⅲ 批量操作
Ⅳ 组合搜索