active_id在Odoo 13中无法正常工作

问题描述

这是问题,发生在每个需要使用active_idhttps://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问题的解决方案。我还不知道。