Odoo 15 Enterprise中隐藏父任务已设置字段的子任务字段需求
Odoo 15 Enterprise 子任务字段隐藏实现方案
方案一:前端视图直接配置(无需代码)
通过修改任务表单视图的字段属性,利用Odoo的attrs实现动态隐藏:
- 进入后台「设置」>「技术」>「视图」,搜索并打开任务表单视图(对应XML ID:
project.task.form) - 找到目标字段(如
field_a)的定义,添加attrs属性:
逻辑说明:当当前任务存在父任务,且父任务的<field name="field_a" attrs="{'invisible': [('parent_id', '!=', False), ('parent_id.field_a', '!=', False)]}"/>field_a已设置值时,该字段自动隐藏。 - 若字段是必填项,需同步调整必填规则,避免子任务保存报错:
<field name="field_a" attrs="{'invisible': [('parent_id', '!=', False), ('parent_id.field_a', '!=', False)], 'required': [('parent_id', '=', False)]}"/> - 保存视图后刷新页面,测试子任务的字段显示效果。
方案二:后端计算字段+视图控制(复杂逻辑场景)
如果需要更灵活的判断规则(比如字段是多选、状态类字段),可通过后端计算字段辅助实现:
- 继承任务模型添加计算字段
创建自定义模块,在Python文件中继承project.task:from odoo import models, fields class ProjectTask(models.Model): _inherit = 'project.task' hide_field_a = fields.Boolean(compute='_compute_hide_field_a') def _compute_hide_field_a(self): for task in self: # 自定义判断逻辑:父任务存在且field_a已设置 task.hide_field_a = bool(task.parent_id and task.parent_id.field_a) - 修改视图绑定计算字段
回到任务表单视图,将字段的attrs绑定到计算字段:<field name="field_a" attrs="{'invisible': [('hide_field_a', '=', True)]}"/> - 安装或升级自定义模块,验证功能生效。
注意事项
- 确保
field_a在父任务和子任务的模型中均存在,且权限配置允许读取父任务的field_a值。 - 若使用方案二,需保证自定义模块的依赖包含
project模块。
内容的提问来源于stack exchange,提问作者marine
相关产品推荐
相关产品推荐

