我正在尝试以编程方式在服务器操作中合并一些合作伙伴,而不使用“合并选定的合作伙伴”(这是odoo本身提供的,必须选择一些合作伙伴才能进行一些单击然后合并)。
为此,我使用了base.partner.merge.automatic.wizard
模型对象和两个字段集partner_ids
和dst_partner_id
,然后在其上调用了action_merge()
方法。
到目前为止,这是我在很多方面都尝试过的方法,但是它不起作用,并且没有错误。
partner_ids = env['res.partner'].browse([3135,5379])
dst_partner = env['res.partner'].browse(5379)
merge = env['base.partner.merge.automatic.wizard'].create({
'partner_ids': partner_ids,
'dst_partner_id': dst_partner[0].id,
})
merge.action_merge()
(出于测试目的,选择了2个静态ID)
MergePartnerAutomatic(model.TransientModel)在github上的源代码。
答案 0 :(得分:0)
简短的回答:一个One2many字段使用特殊的语法。因此,请使用'partner_ids': [(6,0,partner_ids.ids)],
partner_ids = env['res.partner'].browse([3135,5379])
dst_partner = env['res.partner'].browse(5379)
merge = env['base.partner.merge.automatic.wizard'].create({
'partner_ids': [(6,0,partner_ids.ids)],
'dst_partner_id': dst_partner[0].id,
})
merge.action_merge()
详细答案:
One2many和Many2many使用一种特殊的“命令”格式来操作存储在字段中或与该字段相关联的记录集。
此格式是按顺序执行的三元组的列表,其中每个三元组是要在记录集上执行的命令。并非所有命令都适用于所有情况。可能的命令是:
参考:https://www.odoo.com/documentation/12.0/reference/orm.html#relational-fields上的Odoo ORM API文档