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

如何仅在从part.one表单视图访问时触发test.lines记录规则

解决方案

要实现仅从part.one表单访问test.lines时触发记录规则,核心思路是通过上下文(context)标记访问来源,再在记录规则中根据上下文判断是否生效。

步骤1:在视图中传递来源标记

修改part.one和part.two的表单视图,给对应的one2many字段添加专属上下文参数,用来标记当前访问来源:

part.one的表单视图(XML)

<field name="test_lines" context="{'from_part_one': True}"/>

part.two的表单视图(XML)

<field name="test_lines" context="{'from_part_one': False}"/>

这样当用户从part.one打开test.lines的列表/表单时,上下文会携带from_part_one: True;从part.two打开时则携带False。

步骤2:修改test.lines的记录规则

编辑你已配置的test.lines记录规则,在原有domain条件基础上,添加上下文判断逻辑。

假设原记录规则的domain是[('some_field', '=', 'some_value')],修改后的domain需要结合上下文:

[('some_field', '=', 'some_value'), ('from_part_one', '=', True)]

这里的from_part_one是从上下文中读取的动态参数,Odoo会自动识别上下文里的键值对作为domain的条件。

注意:如果是通过界面配置记录规则,直接在domain输入框中写:

[('some_field', '=', 'some_value'), '&', (1, '=', 1), 'context.get("from_part_one", False)']

((1, '=', 1)是占位符,用来衔接逻辑与操作符&,确保上下文判断与原有条件同时生效)

额外注意事项

  • 如果需要在创建test.lines记录时也保持规则生效,上面的视图配置已经覆盖了这个场景,从part.one创建时上下文会自动传递到新记录的表单视图。
  • 若存在批量操作或API调用的场景,需要手动传递对应的上下文参数,否则记录规则可能不会按预期触发。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 12:42:35