Согласно значению x2many, заполняющему , используемый вами формат обновляет существующую запись id id
со значениями в values
. id
должен быть идентификатором записи inv_products
, а не custom.invoice
записи.
Вы должны получить сообщение об ошибке сервера Odoo, если запись с идентификатором, равным 1
, не существует в базе данных :
One of the records you are trying to modify has already been deleted (Document type: custom.report.line).
(Records: (1,), User: 2)
Вы объявили product_dict
вне a для l oop и использовали update
внутри, в конце l oop у вас будут значения последней строки invoice_line_ids
повторяется, вы попросили систему обновить указанную строку c (с идентификатором invoice_report.id) с теми же значениями в каждой итерации, когда вы вызывали метод write
.
Чтобы добавить новые записи в inv_products
, используйте [(0, 0, values)]
формат:
invoice_report = self.create(vals)
product_list = []
for line in ids.invoice_line_ids:
product_dict = {
}
product_list.append((0, 0, product_dict))
invoice_report.write({
'inv_products': product_list
})