该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

2,修改排序代码

首先从request当中获得排序的参数:

order_by_column = []

order_by_dir = []

# 支持多排序。使用shift+鼠标左键。

for item, val in self.request.arguments.items():

# print("order:", item)

if str(item).startswith("order["):

print("order:", item, ",val:", val[0])

if str(item).startswith("order[") and str(item).endswith("[column]"):

order_by_column.append(int(val[0]))

if str(item).startswith("order[") and str(item).endswith("[dir]"):

order_by_dir.append(val[0].decode("utf-8")) # bytes转换字符串

设置两个数组保存参数。分别是多参数排序的column和dir。 但是这个数据是一个column的index,需要用index进行索引查询报表的column 名称。

还好这个字典已经存储了。

StockWebData(

type="基本面数据",

name="成长能力",

table_name="ts_growth_data",

columns=['quarter', 'code', 'name', 'mbrg', 'nprg', 'nav', 'targ', 'epsg', 'seg'],

column_names=["季度", "代码", "名称", "主营业务收入增长率(%)", "净利润增长率(%)", "净资产增长率", "总资产增长率",

"每股收益增长率", "股东权益增长率"],

order_by=" quarter desc "

)

增加order by 排序:

# 增加排序。

if len(order_by_column) != 0 and len(order_by_dir) != 0:

order_by_sql = " ORDER BY "

idx = 0

for key in order_by_column:

# 找到排序字段和dir。

col_tmp = stock_web.columns[key]

dir_tmp = order_by_dir[idx]

if idx != 0:

order_by_sql += " ,%s %s" % (col_tmp, dir_tmp)

else:

order_by_sql += " %s %s" % (col_tmp, dir_tmp)

idx += 1

拼接好的sql 放到select 语句的后面就行了。

前段页面修改:

var myTable = $('#dynamic-table').DataTable( {

"bFilter": false,

"ordering": true,

"processing": true,

"serverSide": true,

"lengthMenu": [[20, 30, 50, 100,1000, -1], [20, 30, 50, 100,1000, "All"]],

"language": {

"url": "/static/js/datatables.Chinese.json"

},

"ajax": "/stock/api_data?name="+nameParam,

"columns": [

{% for column in stockWeb.columns %}

{ "data": "{{ column }}" },

{% end %}

]

} );

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐