首页 > 技术文章 > odoo12 - 按钮跳转指定页面

pywjh 2020-04-17 14:39 原文

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

 

推荐阅读