代码之家  ›  专栏  ›  技术社区  ›  Developer Marius Žilėnas

将项目任务标记的作用域设置为项目的标记

  •  0
  • Developer Marius Žilėnas  · 技术社区  · 6 年前

    有一个模型

    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)]") .
    

    项目任务视图(模型项目任务)包含字段

    <field name="tag_ids" widget="many2many_tags" options="{'no_create_edit': True}"/>
    

    用户只希望在tag\u id中看到为该任务所属的项目配置的那些标记。对于给定任务的项目,没有配置标记,因此标记ID应该为空,但不是:(。

    enter image description here

    我希望这个域名能有所帮助。不幸的是,当tag\u id字段定义与domain一起使用时

    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') 
    

    enter image description here

    用户希望只看到为项目分配的那些标记。

    项目经理可以在“项目”窗口中向项目添加标记。应允许编辑或创建任务的用户仅选择为项目添加的标记。

    如何修改代码,使tag\u id只显示任务所属的项目\u id的标记?

    3 回复  |  直到 6 年前
        1
  •  1
  •   Cristin Meravi    6 年前

    项目标记是按任务分配的,而不是按项目分配的。所以你的逻辑应该像标签一样_任务id.project\u id=项目\u id。

    我希望这有帮助

        2
  •  1
  •   aekis.dev    6 年前

    不能在Python字段定义中使用此域

    domain="[('project_id', 'in', project_id)]")
    

    因为正如错误所说,没有上下文可以获取字段的值 project_id 作为 'in', 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

        3
  •  0
  •   Developer Marius Žilėnas    6 年前