我正在使用Odoo 12的Inventory
插件(但是任何模块都可能发生我的问题)。
在此插件中,StockMove
模型具有move_line_ids
字段。
在Detailed Operations
对话框中,我们可以看到所选移动的所有移动线的树状 View 。
如果单击Add a line
按钮并设置字段,则除非单击Confirm
按钮,否则值将存储在内存中,而不存储在数据库中。
我想在我的自定义@api.onchange()
模型的StockMove
方法中复制此行为,但是我找不到如何进行操作。
如果我使用self.move_line_ids.create()
方法创建新记录,则即使不单击Confirm
按钮,移动行也将存储在数据库中。
是否有人设法做到这一点?
先感谢您!
很抱歉,如果它是重复的问题,但是我还没有找到问题的答案> <
jzeta答案有效,但中断了其他Move
字段,例如reserved_availability
(始终为0
)或quantity_done
(始终为1
)。
我将jzeta保持为已验证,因为注释显示了我正在寻找的解决方案。
非常感谢你们的帮助!
最佳答案
我相信您可以通过将值直接分配给move_line_ids
来实现。当然,给定字段是One2many
,则需要使用三元组的特殊列表来实现此目的。在您的情况下,您需要一个[(0, _, values)]
来创建新记录(其中values
是保存每个新记录的字段值的字典)。在下面的示例中,我仅创建一个附加到给定stock.move
实例的记录,并且仅在字典中传递move_id
值。您应该使用新的移动行的适当值来完成代码,但是请注意,您应始终告诉新记录将其链接到哪个库存移动。
@api.onchange('your_field_name')
def _onchange_field(self):
self.move_line_ids = [(0, False, {'move_id': self.id})]
关于odoo - 如何创建记录而不将其保存在数据库中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56092261/