在一个先例中,我一直在寻找BaseModel.new
一种方法,使其行为与create
ORM中的方法类似,但是没有在数据库中写入更改。
是否存在相同的方法,但行为类似unlink
?我想在onchange
通话中从记录集中删除一条记录。我不希望一次删除记录,而只是在用户按下Save
按钮时才删除。
提前非常感谢您!
有关为何需要此功能的更多信息:
我正在使用stock
Odoo的模块。在中Picking
,我想动态更改保留的产品(由唯一的序列号跟踪),这意味着添加一些newmove_line
并删除一些现有的。
我不能简单地更改,lot_id
因为其中move_line
的lot_id
可能会在另一个中保留Picking
(或者至少我没有找到如何整齐地做到这一点)。
通过更改方法lot_id
或selected_move_id.move_line_ids.new({...})
在我的onchange
方法中进行操作,可以添加新的方法。现在,我想删除不再需要的现有文件。我想要删除它们,就像用户按trash
相应行上的图标一样。
我尝试了类似的方法Odoo 12
,但效果很好:
# I change the partner for testing different cases
@api.onchange('partner_id')
def onchage_p(self):
""" remove moves have less then 5 units"""
# create empty record set to hold valid records
new_recs = self.env['stock.move']
for move in self.move_ids_without_package:
# keep only record that greater than 5
if move.product_uom_qty > 5:
new_recs += move
# reassign it to the field.
self.move_ids_without_package = new_recs
当我调试write
时stock.picking
,delete cammand
已为所有保存的移动传递调用:[...,[2, move_id, False]]
该框架能够检测到从原始记录中删除了一条记录recordset
,这就是添加命令的原因。
因此,基本思路是创建一个recordset
包含有效记录的新记录,然后将其再次分配给one2many字段。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句