如何在project.project模型中添加多个合作伙伴?

How to add several partners to the project.project model?

我需要一个项目的合作伙伴不止一个。那就是我试过的:

class project(models.Model):
    _inherit = 'project.project'
    partner_id = fields.Many2many('res.partner',
        string='Customer',
        default=_get_default_partner)

安装失败,出现错误 "unknown function _get_default_partner"。自始至终该函数都存在于继承模型 project.project.

第二版没有改动。安装完成后,我转到 Settings > database > modules > project > project.project 并看到 partner_id 仍然是 many2one:

class project(models.Model):
    _inherit = 'project.project'
    partner_id = fields.Many2many('res.partner',
        string='Customer')

您可以使用 lambda 函数来分配默认值,如下所示:

partner_id = fields.Char(
    string='Customer',
    default=lambda self: self._get_default_partner(),
)

@api.model
def _get_default_partner(self):

    # override the original method

实际上,您应该创建另一个不同的 many2many 字段。而不是尝试将 many2one 转换为 many2many 字段。所以我会做这样的事情:

class ProjectProject(models.Model):
    _inherit = 'project.project'

    partner_id = fields.Many2one(
        invisible=True
    )

    partner_ids = fields.Many2many(
        string='Customer',
        comodel_name='res.partner',
        default=lambda self: self._get_default_partner_ids(),
    )

    @api.model
    def _get_default_partner_ids(self):

        # [...]