首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在odoo-10中以编程方式合并res.partner对象?

如何在odoo-10中以编程方式合并res.partner对象?
EN

Stack Overflow用户
提问于 2019-08-11 14:40:12
回答 1查看 483关注 0票数 0

我正在尝试以编程方式合并服务器操作中的一些合作伙伴,而不使用“合并选定的合作伙伴”(这是由odoo本身提供的,必须选择一些合作伙伴进行一些单击,然后合并)。为此,我使用了base.partner.merge.automatic.wizard模型对象,设置了两个字段,partner_idsdst_partner_id,然后对其调用action_merge()方法。这是我到目前为止在许多方面都尝试过的方法,但它不起作用,我没有得到任何错误。

代码语言:javascript
运行
复制
    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个静态ids )

github上的MergePartnerAutomatic(model.TransientModel)源代码。

EN

回答 1

Stack Overflow用户

发布于 2019-08-21 16:00:35

简而言之: One2many字段使用一种特殊的语法。因此,使用'partner_ids': [(6,0,partner_ids.ids)],

代码语言:javascript
运行
复制
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使用一种特殊的“命令”格式来操作存储在字段中/与字段关联的一组记录。

此格式是顺序执行的三元组的列表,其中每个三元组是在记录集上执行的命令。并非所有命令都适用于所有情况。可能的命令包括:

  • (0,_,values)添加从提供的值dict创建的新记录。
  • (1,id,values)使用值中的值更新id id的现有记录。不能在create()中使用。
  • (2,id,_)从集合中删除id id的记录,然后(从数据库中)将其删除。不能在create().
  • (3,id中使用,_)从集合中删除id id的记录,但不删除它。不能在One2many上使用。不能在create().
  • (4,id中使用,_)将id id的现有记录添加到集合。Can not be used on One2many.
  • (5,_,_)从集合中删除所有记录,相当于显式地对每条记录使用命令3。不能在One2many上使用。Can not be used in create().
  • (6,_,ids)通过id列表替换集合中的所有现有记录,相当于对id中的每个id使用命令5后跟命令4。上面列表中标记为_的值将被忽略,可以是任何值,通常为0或False。

参考:https://www.odoo.com/documentation/12.0/reference/orm.html#relational-fields上的Odoo ORM文档

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57447871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档