Odoo - 使用 5 和 3 命令时 write 方法会导致内存泄漏吗?
Odoo - can write method cause memory leak when using 5 and 3 commands?
我想知道错误使用 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。
只需在订单行字段中使用 unlink
:
sale_order.order_line.unlink()
我想知道错误使用 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。
只需在订单行字段中使用 unlink
:
sale_order.order_line.unlink()