Мне интересно, может ли неправильно используемый метод write
привести к «утечке памяти».
Предположим, у меня есть какой-то ордер на продажу, который мне нужно пересчитать. Поэтому я бы удалил все предыдущие строки заказа, а затем в al oop я бы создал новые строки вроде этого:
sale_order.write({'order_line':[(5, 0, 0)]}) # Remove all previous products
vals = []
for product in new_products:
vals.append((0, 0, {'product_id': product.id, 'product_uom_qty': product.qty, …})) # Create new lines
sale_order.write({'order_line':vals}) # Add new lines
Но в документации говорится, что (5, 0, 0)
эквивалентно вызову (3, id, 0)
для каждого идентификатора, и что эта команда не удаляет записи из базы данных (только (2, id, 0)
делает).
Итак, если я правильно понимаю, если бы я запустил этот код пару раз в конце, я бы остаться с множеством строк, которые не соответствуют какому-либо порядку и просто существуют в базе данных?
Если да, то как мне сделать это, чтобы не вызвать эту утечку? Нужно ли мне использовать 2
вместо 3/5
команд?
Использование Odoo13.