【发布时间】:2020-08-04 09:17:14
【问题描述】:
我想知道错误使用 write 方法是否会导致“内存泄漏”。
假设我有一些销售订单需要重新计算。所以我会删除所有以前的订单行,然后在一个循环中我会创建这样的新行:
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) 相当于为每个 id 调用 (3, id, 0),并且此命令不会从数据库中删除记录(只有 (2, id, 0) 会)。
所以如果我理解正确,如果我在最后运行这段代码几次,我会留下许多不符合任何顺序而只存在于数据库中的行?
如果是这样 - 我应该如何在不导致泄漏的情况下执行此操作?我需要使用2 而不是3/5 命令吗?
使用 Odoo13。
【问题讨论】: