odoo的提供了原生方法,在form视图右上角添加按钮
具体实现如下:
1. 在视图中sheet标签下添加按钮button_box模块
<form>
<sheet>
<div class="oe_button_box" style="width:100px !important" name="button_box" attrs="{'invisible': [('id', '=', False)]}">
<button class="oe_stat_button" icon="fa-bug"
type="object" name="open_related_issue_list">
<field name="issue_count" widget="statinfo" string="issue数量"/>
</button>
</div>
2. 要调整按钮大小,修改外层div中的style即可,如果样式不生效,加上!important试一下
3. button标签的type属性为object的时候name属性是调用后端的python函数;type属性的值是action的时候,name属性的写法比较特殊应该是:"%(action的id)d"
4. button标签中的field标签,是正常的字段的写法就行
5. 调用的后端方法:可以打开一个action,也可以做其他操作,这个看需求就行
6. button的name调用对应模块的后端方法,如要返回视图返回一个action就好
@api.multi
def open_related_issue_list(self):
'''
右上角按钮,点击跳转到先关issue页面
'''
self.ensure_one()
list_id = self.env.ref('模块名称.tree视图id').id
form_id = self.env.ref('模块名称.form视图id').id
action = {
'type': 'ir.actions.act_window',
'res_model': '模块名称',
'name': '菜单名字',
'view_type': 'tree,form',
'view_mode': 'tree,form',
'views': [[list_id, 'list'], [form_id, 'form']],
'domain': [('project_id', '=', self.id)],
'target': 'current',
}
return action
效果展示