在一个先例问题中,我正在寻找与 ORM 中BaseModel.new
的create
方法类似的方法,但不会在数据库中写入更改。
是否存在相同的方法,但行为像unlink
?我想在onchange
通话中从我的记录集中删除一条记录。我不希望立即删除记录,但仅当用户按下Save
按钮时才删除。
非常感谢您提前!
有关我为什么需要此功能的更多信息:
我正在使用stock
Odoo的模块。在 a 中Picking
,我想动态更改保留产品(按唯一序列号跟踪),这意味着添加一些新产品move_line
并删除一些现有产品。
我不能简单地更改,lot_id
因为某些move_line
slot_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
Run Code Online (Sandbox Code Playgroud)
当我调试时,
所有保存的动作都会传递调用write
:stock.picking
delete cammand
[...,[2, move_id, False]]
该框架能够检测到一条记录已从原始记录中删除recordset
,这就是添加该命令的原因。
因此,基本想法是创建一个recordset
包含有效记录的新记录,并将其再次分配给 one2many 字段。
归档时间: |
|
查看次数: |
661 次 |
最近记录: |