更新:Odoo项目任务标签域

时间:2018-08-02 10:43:09

标签: python filter odoo odoo-10 odoo-view

项目的任务可以具有许多标签。现在,当用户创建任务时,他可以从所有标签中进行选择。但是他希望能够仅从用于该项目的那些标签中选择标签。

我应该在字段“标签”(在表单上)上具有什么域规则,以使用户在创建新项目任务时只能看到(并最终选择)用户在其中创建任务的项目中使用的那些标签?

我尝试过但没有奏效的东西。

我有以下代码

class InheritedProjectTask(models.Model):     “”“ docstring”“”     _inherit ='project.task'

@api.onchange('project_id')
def onchange_project(self):
    """docstring"""
    tag_ids = []
    if self.project_id:
        for task in self.project_id.task_ids:
            tag_ids += task.tag_ids.ids
    return {'domain': {'tag_ids': [('id', 'in', tag_ids)]}}

安装此代码。我打开一个项目,然后单击“创建”以打开一个任务创建表单(新的“ project.task”模型对象的表单)。在该表单上,我单击下拉的“标签”以列出该项目的可能“标签”(“该项目的可能标签”是在为其创建任务的任何项目任务上使用的所有标签)。我看到了所有标签。这是不需要的。

更新:我可以在“标签”下拉列表中(当我将鼠标悬停在“标签”下拉列表上时,在调试模式下)有效域为id,分别为4,5,6 ,7,8,9,10,11,12,13,14,18,19,20,22,23,24,25,26,27,28,5,4,5,35。这就是问题所在:它不仅仅从该项目的任务中获取标签。来自其他项目任务的标签也会出现,这是不必要的

怎么可能会包含所有标签,而不仅仅是当前项目任务中的那些标签?

1 个答案:

答案 0 :(得分:1)

标记模型具有一个名称字段,因此您可以基于它添加域规则。例如,名称以开头或名称以等结尾

但是您可以在project_id中添加一个新字段(project.tags)来指定标签所属的项目,然后在任务表单中使用例如[('project_id', '=', project_id)]。 / p>