crazy-heng
天降大任于斯人也...

导航

 

一:需求

在crm系统中对数据展示时候,我们应该提供接口给使用我们stark组件的用户自定制排序方法。从而达到个性化排序数据

 

二:所需知识点

order_by

 

三:实现思路

  1. 在用户接口类中定制排序列表
  2. 在stark组件中设置默认排序方式
  3. 在显示列表之前获取排序方式,在默认情况下会优先找到用户接口,用户接口没有设置会找我们默认接口排序
  4. 在视图函数中,获取数据后进行排序

四:实现代码

应用.stark.py:

class UserHandler(StarkHandler): 


    order_list = ['-age']  # 自定义排序方法

site.register(models.UserInfo, UserHandler)

stark.py:


class StarkHandler(object):
  order_list = ['-id'] #默认以id排序

def get_order_list(self):
  """
  拿到用户设置排序方法或者默认排序方法
  """
return self.order_list # 拿到排序方法



def changelist_view(self, request): """ 用户列表函数 :return: """ # 1 处理排序 order_list = self.get_order_list() #拿到排序条件 query_set = self.model_class.objects.all().order_by(*order_list) #将排序条件放入查询语句中
这里要注意,排序是以列表的形式,可能有多个字段,所以在传入排序条件的时候需要带上*
# 2 处理页码 # all_count = self.model_class.objects.all().count() all_count = query_set.count() query_params = request.GET.copy() query_params._mutable = True page = Pagination(current_page=request.GET.get('page'), all_count=all_count, base_url=request.path_info, query_params=query_params, per_page=self.per_page_count) data_list = query_set[page.start:page.end] #将带有定制排序的数据传给前端

 

posted on 2019-05-30 13:36  killer-147  阅读(224)  评论(0编辑  收藏  举报