odoo 快速复制添加一个one2many数据

one2many是odoo中的关联字段,绑定表与表之间数据主从关系的。

一般对one2many字段操作有如下:

(0, 0,{ values })根据values里面的信息创建一条新的记录。

(1,ID,{values}) 更新id=ID的记录(对id=ID的执行write 写入values里面的数据,只更新values的数据,其它数据不更改)

(2,ID) 删除id=ID的数据(调用unlink方法,删除数据以及整个主从数据链接关系)

(6,0,[IDs]) 用IDs里面的记录替换原来的记录(就是先执行(5)再执行循环IDs执行(4,ID))(先有数据再和关联字段绑定)

一般情况下,这些操作非常便捷,但是有一些特殊的情况,一个一个添加数据会比较繁琐

如:一个a模型和b模型 同时关联c模型。现在b模型想要从a模型中复制 c的数据 ,如果用(0, 0,{ values })的方法,就很麻烦。

只需要先复制a模型关联字段,然后把复制的数据 关联a的id 清空,加上关联b的id 就可以了 这样就可以快速复制添加一个one2many数据。

如:

class modelA(models.Model):
       _name = 'modela'

       fila = fields.One2many('mainc','model_a')

   class moddelB(models.Model):
      _name = 'modelb'

      filb = fields.One2many('mainc','model_b')


   class mainC(models.Model):
     _name = 'mainc'

     name = fields.Char('Name')
     date = fields.Date('Date')
     model_a= fields.Many2one('modela')
     model_b= fields.Many2one('modelb')

现在fila 是有数据的 filb现在想复制fila的数据  只需要 用fila.copy({"model_a":"","model_b":modelb.id})

实际上 也就是手动关联主从关系

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值