Odoo项目任务域配置:按条件显示指定项目子任务
正确的Odoo Domain配置方案
需求回顾
选中项目时需显示该项目的所有普通任务,仅当项目的display_under_tasks字段为True时,才同时显示该项目的子任务。
问题分析
你之前的Domain逻辑组合混乱,没有把「当前项目任务」作为核心筛选条件,导致出现显示范围错误或任务缺失的问题。
正确Domain配置
核心逻辑是先限定当前项目的任务范围,再区分普通任务和符合条件的子任务,对应的Domain为:
[ ('display_project_id', '=', active_id), '|', ('parent_id', '=', False), ('project_id.display_under_tasks', '=', True) ]
逻辑解释
- 第一行
('display_project_id', '=', active_id):确保只筛选当前选中项目的任务,这是基础范围; '|'表示逻辑「或」,连接两个分支:- 分支1:
('parent_id', '=', False):显示当前项目的所有普通任务(无父任务); - 分支2:
('project_id.display_under_tasks', '=', True):当当前项目允许显示子任务时,显示该项目的所有子任务(有父任务的任务)。
- 分支1:
完整配置代码
替换原domain字段内容即可:
<record id="project.act_project_project_2_project_task_all" model="ir.actions.act_window"> <field name="name">Tasks</field> <field name="res_model">project.task</field> <field name="view_mode">kanban,tree,form,calendar,pivot,graph,activity</field> <field name="domain">[ ('display_project_id', '=', active_id), '|', ('parent_id', '=', False), ('project_id.display_under_tasks', '=', True) ]</field> <field name="context">{ 'default_project_id': active_id, 'show_project_update': True }</field> <field name="search_view_id" ref="project.view_task_search_form"/> <field name="help" type="html"> <p class="o_view_nocontent_smiling_face"> No tasks found. Let's create one! </p> <p> Keep track of the progress of your tasks from creation to completion. <br/> Collaborate efficiently by chatting in real-time or via email. </p> </field> </record>
内容的提问来源于stack exchange,提问作者Rahma Begag
相关产品推荐
相关产品推荐

