如何在按钮点击后检查是否调用了'write'方法? odoo

时间:2017-07-17 10:58:39

标签: python openerp odoo-8 odoo-9 odoo-10

当我点击type ='object'的按钮时,总是调用write方法。我也会自己多次调用一些写入方法,并将值传递给上下文,该按钮是从按钮调用的:

self.with_context(called_from_btn=True).write({
                'product_route_id': product_id.id,
                'route_is_confirmed': True
            })

在这种情况下,在write方法中我可以检查它是否是从按钮调用而不是根据它进行操作。

@api.multi
def write(self, values):
    res = super(Table, self).write(values)
    if 'called_from_btn' in self.env.context:
        ## make actions here

问题是有一种写方法总是被调用,我无法看到。我想覆盖write方法调用并传递上下文called_from_btn或做类似的事情。是否有可能实现这样的目标?

到目前为止我尝试过的是点击按钮时返回空写方法,但我没有成功:

return self.with_context(called_from_btn=True).write()

感谢您抽出宝贵时间考虑我的问题。

1 个答案:

答案 0 :(得分:0)

您可以使用以下方法进行操作。

 <button name="download_report" type="object" icon="STOCK_SAVE"/>

@api.multi 
def download_report(self):
    self.with_context({'called_from_btn':True}).call_your_method()


@api.multi 
def download_report(self):
    self.call_your_method()
    //call custom method from here

您可以直接从按钮方法传递上下文,或者按钮方法编写代码。

这可能会对你有帮助。