Как скопировать значение всех полей из одной записи в другую? - PullRequest
0 голосов
/ 28 июня 2019

У меня есть существующая запись 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 Ответ

2 голосов
/ 28 июня 2019

Я нашел решение, надеюсь, оно поможет тем, у кого такая же проблема.

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)
...