odoo中动态创建action和菜单

admin 2021-8-17 185941

通过代码创建action和菜单的例子,在编写一些动态功能时可以参考:


@api.model
def create(self, vals):
 rec = super(MyBoard, self).create(vals)
 if 'top_menu_id' in vals and 'menu_name' in vals:
  action_id = {
   'name': vals['menu_name'] + " Action",  # action名称
   'res_model': 'myboard.board',           # 引用的model
   'tag': 'myboard',      
   'params': {'board_id': rec.id},         # 其他参数 
  }
  # 创建action
  rec.board_action_id = self.env['ir.actions.client'].sudo().create(action_id)
  # 创建菜单
  rec.board_menu_id = self.env['ir.ui.menu'].sudo().create({
   'name': vals['menu_name'],                                        # 菜单名
   'active': vals.get('active', True),                               # 菜单有效状态   
   'parent_id': vals['top_menu_id'],                                 # 上级菜单ID
   'action': "ir.actions.client," + str(rec.board_action_id.id),     # 菜单对应的action
   'groups_id': vals.get('group_access', False),                     # 访问组
   'sequence': vals.get('menu_sequence', 10)                         # 菜单序号
  })
 return rec


最新回复 (0)
返回