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

从树视图打开记录时,如何按状态自动切换对应表单视图?

Odoo表单视图按状态栏切换无效的解决方法

仅设置statusbar参数无法让系统自动根据记录状态匹配对应视图,必须给每个表单视图绑定对应状态的domain规则,具体操作如下:

  • 给三个表单视图分别添加domain属性,明确匹配对应状态:
    • draft_view.xml:添加<field name="domain">[('state', '=', 'draft')]</field>
    • progress_view.xml:添加<field name="domain">[('state', '=', 'in_progress')]</field>
    • done_view.xml:添加<field name="domain">[('state', '=', 'done')]</field>
  • 确保所有视图的model属性正确指向业务模型,视图类型为form
  • 统一视图优先级(priority属性),避免因优先级导致系统优先加载draft视图
  • 升级模块并清除浏览器缓存,使配置生效

示例代码片段

<!-- 草稿状态视图 -->
<record id="draft_view" model="ir.ui.view">
    <field name="name">your.model.draft.form</field>
    <field name="model">your.model</field>
    <field name="arch" type="xml">
        <form>
            <header>
                <button string="启动流程" type="object" name="action_to_progress"/>
                <field name="state" widget="statusbar" statusbar_visible="draft,in_progress,done"/>
            </header>
            <!-- 草稿状态下的表单字段 -->
        </form>
    </field>
    <field name="domain">[('state', '=', 'draft')]</field>
</record>

<!-- 进行中状态视图 -->
<record id="progress_view" model="ir.ui.view">
    <field name="name">your.model.progress.form</field>
    <field name="model">your.model</field>
    <field name="arch" type="xml">
        <form>
            <header>
                <button string="标记完成" type="object" name="action_to_done"/>
                <field name="state" widget="statusbar" statusbar_visible="draft,in_progress,done"/>
            </header>
            <!-- 进行中状态下的表单字段 -->
        </form>
    </field>
    <field name="domain">[('state', '=', 'in_progress')]</field>
</record>

额外验证点

  • 确认记录的state字段值已正确更新(可通过数据库查询或开发者模式下查看字段值)
  • 检查视图ID是否唯一,避免出现重复视图覆盖配置

内容的提问来源于stack exchange,提问作者Denny

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 04:32:08