【问题标题】:Odoo - can write method cause memory leak when using 5 and 3 commands?Odoo - 使用5和3命令时写入方法会导致内存泄漏吗?
【发布时间】: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。

【问题讨论】:

    标签: python orm odoo odoo-13


    【解决方案1】:

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

    sale_order.order_line.unlink()
    

    【讨论】:

      猜你喜欢
      • 2012-12-11
      • 2010-11-18
      • 1970-01-01
      • 2021-03-23
      • 2021-09-25
      • 2014-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多