两个 many2many 领域与不同的合作伙伴

two many2many fields with different partner

我有两个字段应该与 res.partner 相关 在 partner_ids 中,我想选择合作伙伴,在 recipients_ids 中,我想选择另一个将获得文档副本的合作伙伴。在表单视图中如果我更改 partner_ids 或 recipient_ids 两个字段变得相同的问题。我该怎么做才能在这些领域选择不同的合作伙伴?

partners_ids = fields.Many2many('res.partner', string='Companys Names')
recipients_ids = fields.Many2many('res.partner', string='Copys for')

您收到错误是因为这两个字段在 postgres 中使用相同的 table 因为 odoo 为该名称创建了一个 table,如下所示:

    current_model_name_co_model_name_rel

你的情况

    your_model_res_partner_rel

所以你需要告诉 odoo 每个字段都有它自己的关系

partners_ids = fields.Many2many('res.partner', # co_model
                                'your_model_partners_rel', # relation name change your_model to much your model name
                                string='Companys Names')
recipients_ids = fields.Many2many('res.partner', 
                                'your_model_recipients_rel', 
                                string='Copys for')

当您创建 m2m 字段时,最好通过 keyarguement 指定此值

        _name = 'my.model'

        # exmple
        user_ids = fields.Many2many(comodel_name='res.users', # name of the model
                            relation='my_model_users_rel', # name of relation in postgres
                            column1='session_id', # id reference to current mode
                            column2='user_id', # id reference to co_model
                            string='Allowed users')