Odoo 12 - 生成和下载 CSV 文件
Odoo 12 - Generate and download CSV file
我在制造模块的报告选项卡中添加了一个菜单项。我已经编写了 python 代码来创建 CSV 文件。但是当我单击制造模块中的菜单项时无法弄清楚如何使其可下载。
这是菜单项代码:
<record model="ir.actions.server" id="raw_material_planning">
<field name="name">Raw Material Planning</field>
<field name="type">ir.actions.server</field>
<field name="res_model">gear.manufacturing</field>
<field name="model_id">342</field>
<field name="state">code</field>
<field name="code">
action = model.raw_material_planning()
</field>
</record>
<menuitem name="Raw Material Planning" parent="mrp.menu_mrp_reporting" id="menu_raw_material_planning"
action="raw_material_planning"/>
另外,应该直接下载,不要去任何window。
更新
已将字典保存到 CSV 文件
files = base64.b64encode(open('test.csv','rb').read())
attachment = self.env['ir.attachment'].create({
'name': 'test.csv',
'datas': files,
'datas_fname': 'test.csv'
})
return {
'type': 'ir.actions.act_url',
'url': '/web/content/%s?download=true' % (attachment.id),
# 'target': 'new',
'nodestroy': False,
}
请帮助我
这里是所有可以下载内容或文件的控制器。
您需要 return 任何包含您的文件内容的控制器,它将自动下载。
[
'/web/content',
'/web/content/<string:xmlid>',
'/web/content/<string:xmlid>/<string:filename>',
'/web/content/<int:id>',
'/web/content/<int:id>/<string:filename>',
'/web/content/<int:id>-<string:unique>',
'/web/content/<int:id>-<string:unique>/<string:filename>',
'/web/content/<string:model>/<int:id>/<string:field>',
'/web/content/<string:model>/<int:id>/<string:field>/<string:filename>'
]
要下载任何文件,您需要为 ir.attachment
创建一个附件记录。
然后只需在 return 文件的函数中添加以下代码到 url。
attachment = self.env['ir.attachment'].search([('name', '=', 'import_product_sample')])
return {
'type': 'ir.actions.act_url',
'url': '/web/content/%s?download=true' % (attachment.id),
'target': 'new',
'nodestroy': False,
}
它会自动在浏览器中下载您的文件。
我在制造模块的报告选项卡中添加了一个菜单项。我已经编写了 python 代码来创建 CSV 文件。但是当我单击制造模块中的菜单项时无法弄清楚如何使其可下载。 这是菜单项代码:
<record model="ir.actions.server" id="raw_material_planning">
<field name="name">Raw Material Planning</field>
<field name="type">ir.actions.server</field>
<field name="res_model">gear.manufacturing</field>
<field name="model_id">342</field>
<field name="state">code</field>
<field name="code">
action = model.raw_material_planning()
</field>
</record>
<menuitem name="Raw Material Planning" parent="mrp.menu_mrp_reporting" id="menu_raw_material_planning"
action="raw_material_planning"/>
另外,应该直接下载,不要去任何window。
更新
已将字典保存到 CSV 文件
files = base64.b64encode(open('test.csv','rb').read())
attachment = self.env['ir.attachment'].create({
'name': 'test.csv',
'datas': files,
'datas_fname': 'test.csv'
})
return {
'type': 'ir.actions.act_url',
'url': '/web/content/%s?download=true' % (attachment.id),
# 'target': 'new',
'nodestroy': False,
}
请帮助我
这里是所有可以下载内容或文件的控制器。
您需要 return 任何包含您的文件内容的控制器,它将自动下载。
[
'/web/content',
'/web/content/<string:xmlid>',
'/web/content/<string:xmlid>/<string:filename>',
'/web/content/<int:id>',
'/web/content/<int:id>/<string:filename>',
'/web/content/<int:id>-<string:unique>',
'/web/content/<int:id>-<string:unique>/<string:filename>',
'/web/content/<string:model>/<int:id>/<string:field>',
'/web/content/<string:model>/<int:id>/<string:field>/<string:filename>'
]
要下载任何文件,您需要为 ir.attachment
创建一个附件记录。
然后只需在 return 文件的函数中添加以下代码到 url。
attachment = self.env['ir.attachment'].search([('name', '=', 'import_product_sample')])
return {
'type': 'ir.actions.act_url',
'url': '/web/content/%s?download=true' % (attachment.id),
'target': 'new',
'nodestroy': False,
}
它会自动在浏览器中下载您的文件。