python - 更新:Odoo 项目任务标签域
问题描述
项目的任务可以有很多标签。现在,当用户创建任务时,他可以从所有标签中进行选择。但他希望能够仅从用于该项目的那些标签中选择标签。
我应该在“标签”字段(在表单上)上设置什么域规则,让用户在创建新项目任务时只查看(并最终选择)用户为其创建任务的项目中使用的那些标签?
我尝试过但没有奏效。
我有以下代码
类 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, 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_id
)project.tags
来指定标签属于哪个项目,然后在您可以使用的任务表单中[('project_id', '=', project_id)]
。
推荐阅读
- java - 0.0 四舍五入 o 包装器中的 0 - ApaceCXF REST
- python - 有没有办法将列的每个唯一值解析为单独的 CSV?
- java - Android中生成的文件出现重复资源错误
- c++ - 字符串类中指针和整数的比较 - C++
- sql - 带有特定字符的 SQL Trim
- r - 仅平均重复行并替换定义列中的值
- c# - ASP.NET Cookie 未更新 - 特定于环境
- javascript - ASP.NET MVC 应用程序主题的暗模式不会切换
- python - 如何解决此“未找到子字符串”错误?
- mysql - 如何在 MySQL JSON 语句中使用 JSON 子查询