如何将所有字段的值从一条记录复制到另一条记录?

时间:2019-06-28 00:47:36

标签: odoo odoo-11

我有一个现有的记录A,我想从记录B中覆盖其值。 以常规方式,我们使用A.write({'filed1':RecB's_value,...})进行更新。 但是,如果有近400个字段,我想知道是否有方便的方法可以做到这一点。

我已经尝试过作为下面的代码

copy = rec_b.copy()
rec_a.write({copy})

遇到错误

AttributeError: 'yc.purchase' object has no attribute 'pop'

我希望可以代替我的手动作业。

1 个答案:

答案 0 :(得分:2)

我找到了解决方法, 希望它可以帮助遇到同样问题的人。

a = self.browse(a)
b = self.browse(b)
# read all field_name into a list
_fields = []
for fn in self._proper_fields._map.keys():
    _fields.append(fn)
# start to write
vals = {}
for _f in _fields:
    # M2O must use id
    if hasattr(b[_f],'id'):
        # a.write({_f: b[_f].id})
        vals.update({_f: b[_f].id})
    else:
        # a.write({_f: b[_f]})
        vals.update({_f: b[_f]})

a.write(vals)