web2py的grid组件数据导出发现个小bug:
当grid的query用到2个表 连接查询,且又有导出的表有虚拟字段时,导出的字段就不对了,经过跟踪发现,原因时sqlhtml.py文件中,在生成导出对象rows以后,有个赋值操作:
# expcolumns is all cols to be exported including virtual fields rows.colnames = expcolumns
而rows对象还有个colnames_fields结构,上述操作导致了rows.colnames跟colnames_fields不一致,
但最终修改bug却在object.py源文件:
找到BasicRows类的这个方法:
def colnames_fields(self):
原来的 if len(colnames) > len(plain_fields):段落直接改为:
if len(colnames) > len(plain_fields): # correspondance between colnames and fields is broken, # search for missing virtual fields # todo 当连接查询,且又有虚拟字段时,sqlhtml.py中导出时,rows.colnames = expcolumns会导致rows对象的colnames_fields损坏,导出的字段不对,需要修复,这是框架的小bug fields = [] for name in colnames: (t, f) = name.replace('"', '').split('.') table = self.db[t] fields.append(table[f]) return fields