问题描述
我在odoo中打算自定义excel下载,但只能在form试图下添加“导出excle”选项成功,tree视图没有这个选项
form视图
tree视图
代码:
view.xml
<act_window id="action_export_wizard"
name="導出Excel"
src_model="split.accountant.total"
res_model="export.wizard"
view_type="tree" view_mode="form"
target="new"/>
<record id="wizard_view" model="ir.ui.view">
<field name="name">export wizard</field>
<field name="model">export.wizard</field>
<field name="arch" type="xml">
<form string="導出記錄">
<footer>
<button string="下載" class="btn-primary" name="action_export" type="object"/>
<button string="關閉" class="btn-default" special="cancel" />
</footer>
</form>
</field>
</record>
model.py
class ExportWizard(models.Model):
_name = 'export.wizard'
file = fields.Binary('導出文件')
def generate_excel(self, product_ids):
"""
根据产品数据导出excel
"""
workbook = xlwt.Workbook(encoding='utf-8')
worksheet = workbook.add_sheet('会计总账')
# add header
header = ['公司', '账目笔数', '总账']
for col in range(len(header)):
worksheet.write(0, col, header[col])
# add data
for row in range(1, len(product_ids)+1):
product_id = product_ids[row-1]
worksheet.write(row, 0, product_id.company_name)
worksheet.write(row, 1, product_id.accountant_num)
worksheet.write(row, 2, product_id.accountant_total)
# save
buffer = BytesIO()
workbook.save(buffer)
return base64.encodebytes(buffer.getvalue())
@api.multi
def action_export(self):
context = dict(self._context or {})
print("context=",context)
active_ids = context.get('active_ids', []) or []
print("active_ids=", active_ids)
product_tmpl_ids = self.env['split.accountant.total'].search([('id', 'in', active_ids)])
self.file = self.generate_excel(product_tmpl_ids)
value = dict(
type='ir.actions.act_url',
target='new',
url='/web/content?model=%s&id=%s&field=file&download=true&filename=accountant.xls' % (self._name, self.id),
)
return value
你是不是在act_window设置了multi="True"