python - 更新: Odoo project task tags domain

标签 python filter odoo odoo-10 odoo-view

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

我应该在“标签”字段(表单上)上设置什么域规则,以便让用户在创建新项目任务时仅查看(并最终选择)用户为其创建任务的项目中使用的那些标签?

我尝试过但没有成功。

我有以下代码

类 InheritedProjectTask(models.Model): “”“文档字符串”“” _inherit = '项目.任务'

@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”模型对象的表单)。在该表单上,我单击下拉“标签”以列出项目可能的“标签”(“项目可能的标签”是在为其创建任务的项目的任何任务上使用的所有标签)。我看到了所有的标签。这不是我们想要的。

更新:我可以在“标签”下拉列表中看到(在 Debug模式下,当我将鼠标悬停在“标签”下拉列表上时)有效域是 id, in,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 。这就是问题所在:它不只从该项目的任务中获取标签。来自其他项目任务的标签也会出现,这是不需要的

为什么所有标签都包含在内,而不仅仅是当前项目任务中的标签?

最佳答案

标签模型有一个名称字段,因此您可以根据它添加您的域规则。例如名称开头或名称结尾等。

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

关于python - 更新: Odoo project task tags domain,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51651620/

相关文章:

python - 如何在 odoo 13 中查找特定产品的翻译字段

python - 如何将 pandas 中的列转换为一个日期时间列?

Java列表,按3组计算对象的非零属性

python - 在 Python 中使用过滤函数

javax.servlet.FilterChain 在 Firefox 中将 ContentType 设置为 text/plain

javascript - Openerp 模块与 javascript 的 Web 问题

testing - 适用于 odoo 的自动化测试工具

python - 使用 Python 解析 XML 文件

python - 使用 pygame 中的类创建矩形?

python - 如何安装keras-bert? (包未找到错误: The following packages are not available from current channels)