Odoo批量导出数据 - xiaohao0576/odoo-doc GitHub Wiki
使用Web界面导出数据
使用Python代码导出数据
Odoo的Model有一个函数def export_data(self, fields_to_export)
,专门是用来批量导出数据的,上面的网页后台导出,调用的也是这个函数,查看源代码
此函数的参数,是一个字段名的列表,此列表可以提前使用Web后台,保存成字段模板,在导出界面保存,以备代码中重复调用,字段模板保存在ir.exports
和ir.exports.line
中,使用以下代码取出事先保存的字段模板
def fields_list(export_id):
export = request.env['ir.exports'].browse([export_id]).read()[0]
export_fields_list = request.env['ir.exports.line'].browse(export['export_fields']).read()
return [f['name'] for f in export_fields_list])
以上代码参考出处,查看源码
获得字段列表后,按以下方法批量导出数据
- 搜索过滤需要导出的数据,比如
orders = env['sale.order'].search([('state','=','sale')],limit=80)
- 导出数据为python列表,
orders.export_data(fields_list).get('datas',[])
,导出的字段值全部是字符串 - 导出数据后,可以做变化、运算,生成报表等
export_data函数字段列表格式
- 数据库id,字段名称为
.id
,比如.id
,product.id
- xmlID,字段名是
id
,比如product/id
- 联表查询时,使用 / 分割字段
使用Web API,POST请求下载Excel数据
使用POST请求/web/export/xlsx
,可以下载Excel文件的数据,查看源码
使用POST请求/web/export/csv
,可以下载csv格式的数据,查看源码
请求方法为POST,数据格式是json,需要的参数有'model', 'fields', 'ids', 'domain', 'import_compat'
, 查看源码