将项目任务标记限定为项目标记的范围
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将项目任务标记限定为项目标记的范围相关的知识,希望对你有一定的参考价值。
有一个模型
class project_tag(models.Model):
_name = 'project_tags.project_tag'
_description = 'project_tag'
name = fields.Char(string='Name', required=True, size=64)
然后是项目模型
class project(models.Model):
_inherit = 'project.project'
project_tag_ids = fields.Many2many(
'project_tags.project_tag',
'project_project_tag_ids_rel',
'project_id',
'project_tag_id',
string='Tags')
最后一个模型
class ProjectTask(models.Model):
"""docstring"""
_inherit = 'project.task'
tag_ids = fields.Many2many(
'project_tags.project_tag',
'project_project_tag_ids_rel',
'project_id',
'project_tag_id',
string='Tags',
domain="[('project_id', 'in', project_id)]") .
项目任务的视图(模型ProjectTask)包含字段
<field name="tag_ids" widget="many2many_tags" options="{'no_create_edit': True}"/>
用户希望在tag_ids中仅查看为此任务所属的项目配置的那些标记。对于给定任务的项目,没有配置标签,因此tag_ids应为空但不是:(。
我希望该域名会有所帮助。不幸的是,当tag_ids字段定义带有域时
tag_ids = fields.Many2many(
'project_tags.project_tag',
'project_project_tag_ids_rel',
'project_id',
'project_tag_id',
string='Tags',
domain="[('project_id', 'in', project_id)]") .
用户看到错误
ValueError: Invalid field u'project_id' in leaf "<osv.ExtendedLeaf: (u'project_id', u'=', 10) on project_tags_project_tag (ctx: )>"
没有域时,它会显示所有标签
tag_ids = fields.Many2many(
'project_tags.project_tag',
'project_project_tag_ids_rel',
'project_id',
'project_tag_id',
string='Tags')
用户希望仅查看为项目分配的那些标记。
项目经理可以在项目窗口中为项目添加标签。应允许编辑或创建任务的用户仅选择为项目添加的那些标记。
如何修改代码,以便tag_ids只显示那些任务所属的project_id标签?
项目标签由任务分配,而不是项目。所以你的逻辑必须像tag_id.task_id.project_id = project_id。
我希望这有帮助
您不能在Python字段定义中使用此域
domain="[('project_id', 'in', project_id)]")
因为错误状态没有上下文能够获得字段project_id
的值作为域的'in', project_id)]")
部分的变量。您可以在xml视图中定义它(在视图中也包含project_id字段),而不是在字段定义中使用它。
<field name="project_id"/>
<field name="tag_ids" widget="many2many_tags" domain="[('project_id', 'in', project_id)]" options="{'no_create_edit': True}"/>
我看到的另一个错误是你的模型project_tags.project_tag
没有你想在你的域中过滤的project_id字段,所以至少我没有看到包含该字段的整个模型定义或者你没有添加它对于模型,您将无法在域中使用该字段。
我最终安装了模块Project tags。然后我将项目任务配置为仅显示可供选择的标记,其名称位于项目标记列表中。
:)
以上是关于将项目任务标记限定为项目标记的范围的主要内容,如果未能解决你的问题,请参考以下文章
如何在 RecyclerView 项目更改上触发 MainActivity 映射修改