如何从 Odoo 的弹出窗口中获取父表单的字段?
How to get a field of the parent form from a pop-up in Odoo?
我有一个带有 One2many 字段的表单。您可以从该字段添加元素,如果这样做,将打开一个弹出窗口。我想知道如何获取此弹出窗口中父表单中的字段。
例如:
父表单(模型 my.parent.model
)有一个名为 partner_id
的字段。弹出窗口(模型 my.child.model
)有一个名为 product_id
的字段。在 my.child.model
中,我添加了一个函数,该函数在 product_id
更改 (@api.onchange('product_id')
) 时调用。在此函数中,我想在父表单中获取 partner_id
selected。
为此,我将此添加到 XML 视图中的 product_id
:
<field name="product_id" context="{'partner_id':parent.partner_id}" />
在 onchange 函数中,如果没有 selected 合作伙伴,我将引发异常。打开弹出窗口时,尽管有合作伙伴 selected,但始终会引发此异常。但是,当我 select 任何产品时,它都能完美运行。
问题是打开弹窗时触发了onchange函数,此时context没有变量partner_id
(好像没来得及获取它)。
这个问题在版本 7 中没有发生,因为在这个版本中你必须将变量传递给 onchange 并且你可以在那里包含 partner_id
,但是现在,在版本 8 中,我该如何管理这个?
提前致谢!
好吧,我浪费了很多时间寻找解决方案而不向模型添加新字段,我在提出问题后仅一分钟就找到了解决方案。
我还必须向父表单的 One2many 字段添加上下文:
<field name="order_line" position="attributes">
<attribute name="widget">"one2many_list"</attribute>
<attribute name="context">"{'partner_id': partner_id}"</attribute>
</field>
现在打开弹窗就可以了!
我有一个带有 One2many 字段的表单。您可以从该字段添加元素,如果这样做,将打开一个弹出窗口。我想知道如何获取此弹出窗口中父表单中的字段。
例如:
父表单(模型 my.parent.model
)有一个名为 partner_id
的字段。弹出窗口(模型 my.child.model
)有一个名为 product_id
的字段。在 my.child.model
中,我添加了一个函数,该函数在 product_id
更改 (@api.onchange('product_id')
) 时调用。在此函数中,我想在父表单中获取 partner_id
selected。
为此,我将此添加到 XML 视图中的 product_id
:
<field name="product_id" context="{'partner_id':parent.partner_id}" />
在 onchange 函数中,如果没有 selected 合作伙伴,我将引发异常。打开弹出窗口时,尽管有合作伙伴 selected,但始终会引发此异常。但是,当我 select 任何产品时,它都能完美运行。
问题是打开弹窗时触发了onchange函数,此时context没有变量partner_id
(好像没来得及获取它)。
这个问题在版本 7 中没有发生,因为在这个版本中你必须将变量传递给 onchange 并且你可以在那里包含 partner_id
,但是现在,在版本 8 中,我该如何管理这个?
提前致谢!
好吧,我浪费了很多时间寻找解决方案而不向模型添加新字段,我在提出问题后仅一分钟就找到了解决方案。
我还必须向父表单的 One2many 字段添加上下文:
<field name="order_line" position="attributes">
<attribute name="widget">"one2many_list"</attribute>
<attribute name="context">"{'partner_id': partner_id}"</attribute>
</field>
现在打开弹窗就可以了!