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

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)]}"/>
    
  • 保存视图后刷新页面,测试子任务的字段显示效果。

方案二:后端计算字段+视图控制(复杂逻辑场景)

如果需要更灵活的判断规则(比如字段是多选、状态类字段),可通过后端计算字段辅助实现:

  1. 继承任务模型添加计算字段
    创建自定义模块,在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)
    
  2. 修改视图绑定计算字段
    回到任务表单视图,将字段的attrs绑定到计算字段:
    <field name="field_a" attrs="{'invisible': [('hide_field_a', '=', True)]}"/>
    
  3. 安装或升级自定义模块,验证功能生效。

注意事项

  • 确保field_a在父任务和子任务的模型中均存在,且权限配置允许读取父任务的field_a值。
  • 若使用方案二,需保证自定义模块的依赖包含project模块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 12:35:31