You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 03:01:04