首页 > 解决方案 > Odoo - 使用5和3命令时写入方法会导致内存泄漏吗?

问题描述

我想知道错误使用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)相当于调用(3, id, 0)每个 id,并且该命令不会从数据库中删除记录(只会删除 (2, id, 0))。

因此,如果我理解正确,如果我最后运行这段代码几次,我会留下许多不对应任何顺序而只存在于数据库中的行?

如果是这样 - 我应该如何在不导致泄漏的情况下执行此操作?我需要使用2而不是3/5命令吗?

使用 Odoo13。

标签: pythonormodooodoo-13

解决方案


只需unlink在订单行字段上使用:

sale_order.order_line.unlink()

推荐阅读