问题描述
这是问题,发生在每个需要使用active_id
:https://github.com/odoo/odoo/issues/39070
总而言之,在自定义的stock.production.lot
视图中,我有以下内容:
<field name="outgoing_moves" context="{'default_lot_id': active_id}"/>
outgoing_moves
是一个 One2many 字段。我只想在用户每次添加新的出库单时自动用当前的未平仓交易填充lot_id
字段。
问题是,如果我从其他模型视图(例如,通过快捷按钮)打开此批次视图,则active_id
不会更新,并且会带给我先前模型的ID。
例如,我在客户133中单击一个按钮后打开了第61号批次。当我尝试在 One2many 字段中添加新的外发移动时,出现错误“ ID 133的批次不存在”。这是13.0版的odoo错误,目前尚未修复。
他们在GitHub线程中建议的解决方案是使用active_ids[0]
而不是active_id
:
请注意,它确实使用active_ids [0],即使在您提供的示例中也可以使用。
<field name="outgoing_moves" context="{'default_lot_id': active_ids[0]}"/>
好吧,每个人似乎都对该解决方案感到满意,但是在我看来,它不起作用。我很确定自己的代码已正确更新并且正在使用active_ids[0]
,但是我总是得到错误的ID。
我读过的另一种解决方案是使用可实现的ID,即记录本身的ID(在我的情况下是很多)。我已经尝试并工作了,但是有时,在重新启动odoo之后,每次单击odoo中的任何内容都会收到JavaScript错误。当我删除outgoing_moves
的上下文时,错误消失了:
<field name="id" invisible="1"/>
<field name="outgoing_moves" context="{'default_lot_id': id}"/>
有人遇到此问题并找到了解决方法吗?
解决方法
lot_id
是我猜对了的One2many字段的逆字段吗?
您无需在One2many字段模型的列表/表单视图上显示甚至定义此字段,因为Odoo将在创建时自动填充它。
但是,如果它是默认视图(在其他地方使用),则创建一个继承的视图,该视图将删除该字段并将该新视图定义为旧视图,尤其是在需要此视图的地方。
这不是active_id
问题的解决方案。我还不知道。