我正在使用Inventory
Odoo 12 的插件(但我的问题可能发生在任何模块上)。
在这个插件中,一个StockMove
模型有一个move_line_ids
field.
In the Detailed Operations
对话框中,我们可以看到所选棋步的所有棋步线的树形视图。
如果我们点击Add a line
按钮,并设置字段,值存储在内存中,但不会存储在数据库中,除非我们单击Confirm
button.
我想将这种行为复制到@api.onchange()
我定制的方法StockMove
模型,但我不知道如何继续。
如果我使用self.move_line_ids.create()
方法来创建我的新记录,即使我不单击,移动线也会存储在数据库中Confirm
button.
有人设法做到这一点吗?
先感谢您!
抱歉,如果这是一个重复的问题,但我还没有找到我的问题的答案>
The jzeta https://stackoverflow.com/a/56113753/10548587答案有效,但破坏了其他Move
像这样的领域reserved_availability
(总是0
) or quantity_done
(总是1
).
我正在保留jzeta https://stackoverflow.com/a/56113753/10548587经验证,评论显示了我正在寻找的解决方案。
非常感谢你们的帮助!
我相信你可以通过直接赋值来实现它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})]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)