如何将多个合作伙伴添加到project.project模型?

时间:2017-11-03 11:58:15

标签: openerp many-to-many project odoo-10

我需要以项目形式拥有一个项目的多个合作伙伴。多数民众赞成我尝试过的:

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中。

第二个版本没有变化。在isttallation之后我去了设置>数据库>模块>项目> project.project 并且看到partner_id仍然是很多人:

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

1 个答案:

答案 0 :(得分:0)

您可以使用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):

        # [...]