stark - 5 ⇲ 其他常用功能

Ⅰ 排序

当数据量增多,对于数据 我们应该能够指定如何排序的。且此功能应该是可以给用户自定义进行配置的。

这是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']

Ⅲ 批量操作

Ⅳ 组合搜索

猜你喜欢

转载自www.cnblogs.com/steven2020/p/10714211.html