python - 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。
解决方案
只需unlink
在订单行字段上使用:
sale_order.order_line.unlink()
推荐阅读
- git - 强制推送 git 预接收挂钩错误
- sas - 将导入的文件名捕获到 SAS 中的变量中
- arrays - 允许用户通过图片框快速循环 100 多张图像的最有效方法是什么
- java - Xamarin Android 本机调用堆栈
- c# - 动态 crm api 无机会创建报价
- tortoisesvn - 更新代码时出现乌龟 SVN 错误
- django - 材料设计引导扩展面板,如谷歌表单
- regex - 在 Word 文档中搜索(单/双引号)之间的文本
- asp.net - ASP.NET 使用 MobileServiceClient 或 IMobileServiceTable 查询多个表
- spring - Spring Security 无法正常工作