我正在尝试使用自动操作来更新模型'product.supplierinfo'中的'sequence'值,以便从采购订单更新供应商的价格时,将优先考虑该供应商以计算补货成本。为此,新的/更新的记录必须获得该产品的最低“序列”值。
自动操作设置:型号:product.supplierinfo行动:执行Python代码条件:创建和更新
py的这一部分成功重置了从2开始的序列:
val = 1
registers = model.search([('product_tmpl_id','=',record.product_tmpl_id.id)], order = "sequence asc")
for reg in registers:
val = val + 1
reg['sequence'] = val
并且这另一个成功地给更新/换行的序列值1:
record.write({'sequence': 1})
但是,当全部放在一起时,所有行都得到序列1:
val = 1
registers = model.search([('product_tmpl_id','=',record.product_tmpl_id.id)], order = "sequence asc")
for reg in registers:
val = val + 1
reg['sequence'] = val
record.write({'sequence': 1})
[我是一个非常菜鸟,我什至以为循环可能不会以缩进结尾,并尝试了另一个循环以证明我丢失了某些东西(首先将序列1设置为目标记录,然后将该记录从搜索方法)。在所有寄存器的序列值上仍为1:
record.write({'sequence': 1})
val = 1
registers = model.search([('product_tmpl_id','=',record.product_tmpl_id.id),('id','!=', record.id)], order = "sequence asc")
for reg in registers:
val = val + 1
reg['sequence'] = val
有人知道为什么不将触发记录的顺序设置为1,然后将其余顺序从2开始设置吗?
[@ CZoellner的帮助下,我们发现我的代码正在创建一个遍历所有记录的循环,在编辑序列值时,它将再次触发自动操作。由于某种原因,它不会引发无限循环错误。