来自onchange方法

时间:2018-02-06 01:02:28

标签: python onchange product odoo

从我读到的内容,你无法从onchange函数返回一个动作。但是,当用户在订单行中更改产品时,我想显示某种对话框。目标是检查产品是否包含has_newproduct = True。在这种情况下,我想询问用户是否要删除原始产品(因为不需要)。

我正在重写采购订单行的onchange功能:

class api_advanced(models.Model):

_inherit = "purchase.order.line"
has_newproduct = fields.Boolean("New Product")

@api.onchange('product_id')
def onchange_product_id(self):
    _logger.debug("------------------- OLD PRODUCT ID ----------------")
    _logger.debug(self._origin.product_id)
    _logger.debug(self._origin.has_newproduct)
    _logger.debug("------------------- NEW PRODUCT ID ----------------")
    _logger.debug(self.product_id)
    _logger.debug(self.has_newproduct)
    # Code to fire wizard is here but it does nothing...

我如何才能完成类似的事情?或者我必须做一些完全不同的事情?我可以在没有询问的情况下删除产品,但这并不是真正的目标...

1 个答案:

答案 0 :(得分:0)

如何打开向导。当你点击按钮odoo调用一个方法, 方法将字典返回给客户端。客户方会 检查返回的值。客户端知道这是一个打开视图的动作。

我试图说这种行为是在javascript中定义的,所以如果你 想要一些像你应该扩展表单视图来处理的东西 来自onchange事件的返回值以打开向导。

或者您只需在树状视图中添加一个按钮,文字 删除orignal产品 该按钮仅在has_newproduct = True时出现(使用相关字段将其添加到树中,以便您可以在attrs中使用它)。用户将知道他可以删除orignal 产品,如果他看到该按钮,你可以添加确认消息来解释什么 这是该行动的结果。