Odoo 14企业版:向导表单直接显示符合域的表单视图记录
Odoo 14 向导返回表单视图解决方案
你的需求是从向导直接打开指定域记录的表单视图,核心问题在于原代码默认优先打开树视图,且表单视图本身是单记录展示模式,以下分两种场景给出解决方法:
场景1:打开域中指定单个记录的表单视图
如果你明确要打开某一条记录的表单(比如域中的第一条),可以直接指定res_id并将表单视图设为唯一或默认视图:
# 静态指定ID的情况 return { 'type': 'ir.actions.act_window', 'views': [(False, 'form')], 'res_model': 'annual.control.base', 'res_id': 174, # 指定要打开的目标记录ID 'target': 'current', }
如果域是动态生成的(不是固定的[174,175]),可以先查询记录再取第一个ID:
records = self.env['annual.control.base'].search([('id', 'in', [174, 175])]) if not records: return {'type': 'ir.actions.act_window_close'} # 无记录时关闭向导 return { 'type': 'ir.actions.act_window', 'views': [(False, 'form')], 'res_model': 'annual.control.base', 'res_id': records[0].id, 'target': 'current', }
场景2:打开表单视图并允许切换域内的其他记录
如果你希望默认打开表单视图,同时用户能通过翻页按钮切换域内的其他记录,可以调整views的顺序,把表单视图放在前面:
return { 'type': 'ir.actions.act_window', 'views': [(False, 'form'), (False, 'tree')], # 表单视图设为默认 'res_model': 'annual.control.base', 'domain': [('id', 'in', [174, 175])], 'target': 'current', }
这种方式下,Odoo会自动打开域中的第一条记录表单,用户可以通过页面顶部的「上一条/下一条」按钮切换同域内的其他记录,也能随时切换回树视图。
关键说明
- Odoo的表单视图本身是为单记录设计的,无法直接在一个表单视图中展示多条记录;
- 原代码中
views列表的顺序决定了默认打开的视图类型,树视图在前则默认打开树视图; - 当指定表单视图且域包含多条记录时,Odoo会自动选中第一条记录打开,同时保留域过滤条件,支持记录切换。
内容的提问来源于stack exchange,提问作者PseudoWithK
相关产品推荐
相关产品推荐

