odoo10中,我要实现点击一个按钮,跳转到一个视图,需要按钮对应一个方法,方法转到视图
# 跳转到form @api.multi def action_account_invoice_view(self): """跳转打开到当前报销单关联的付款单""" res_id = self.env['account.invoice'].search([ ('reimbursed_id', '=', self.id), ('type', '=', 'in_invoice'), ], order='id desc', limit=1) if not res_id: raise ValidationError(_('当前报销单不存在付款单!')) return { 'type': 'ir.actions.act_window', 'name': '报销账单', 'res_model': 'account.invoice', 'views': [[False, "form"]], "res_id": res_id.id, "target": "current", } # 跳转到列表 def account_move_view(self): """跳转到关联的报销凭证""" return { 'name': "报销凭证", 'view_type': 'form', 'view_mode': 'tree,form', 'res_model': 'account.move', 'domain': [('reimbursed_id', '=', self.id)], 'view_id': False, 'views': [ (self.env.ref('account.view_move_tree').id, 'tree'), (self.env.ref('account.view_move_form').id, 'form') ], 'type': 'ir.actions.act_window', }
odoo12中,可以通过action进行跳转
例如:这是一个视图
<record id="FrReimbursedForm" model="ir.ui.view"> ..................................... </record> <record id="ReimbursedAction" model="ir.actions.act_window"> <field name="name">报销申请</field> <field name="type">ir.actions.act_window</field> <field name="res_model">fr.reimbursed</field> <field name="view_mode">tree,form</field> <field name="view_id" ref="FrReimbursedTree"/> </record>
现在我在别的视图需要一个按钮,跳转到上面那个form视图
<button name="%(ReimbursedAction)d" string="测试" type="action"/>
可以这样定义,name跟%(aciton的id)d,type为action
在界面上,button对应的name就是action的数字id