【问题标题】:OpenERP : Multiple module overriding onchange functionOpenERP:覆盖onchange函数的多个模块
【发布时间】:2015-05-06 15:09:12
【问题描述】:

我需要覆盖 sale.order 中的 onchange_partner_id 函数,但我正在使用一个已经有一个模块覆盖此函数的系统。 我尝试用类似的代码编写自己的onchange_partner_id

def onchange_partner_id(self, cr, uid, ids, part):
    res = super(sale_order, self).onchange_partner_id(cr, uid, ids, part)
    // doing some stuff and adding it to res['value']['myfield']
return res

但是我的函数没有被 OpenERP 读取。 所以我的问题是,是否有可能让多个功能覆盖同一个功能,如果可能的话,我该如何进行? 提前致谢

【问题讨论】:

    标签: python openerp onchange openerp-7 overriding


    【解决方案1】:

    是的,您可以重写此方法,因为您需要定义继承sale.order 的新类并定义您的方法。

    你的方法肯定会被调用。

    class sale_order(osv.osv):
        _inherit = 'sale.order'
    
        def onchange_partner_id(self, cr, uid, ids, part, context=None):
            res = super(sale_order, self).onchange_partner_id(cr, uid, ids, part,context=context)
            // doing some stuff and adding it to res['value']['myfield']
            return res
    

    【讨论】:

    • 好的,我想我找到了问题,但我无法解决,系统上有另一个模块将原来的字段和原来的onchange函数替换为:<field name="partner_id" position="replace"> <field name="partner_id" on_change="onchange_partner_opt1_id(partner_id)" /> </field>
    • 并且在一个继承了 sale.order 的模块中,该模块定义了 onchange_partner_opt1_id(partner_id) : def onchange_partner_opt1_id(self, cr, uid, ids, part): //new instructions 然后另一个模块继承了 sale.order 并覆盖了这个函数:def onchange_partner_opt1_id(self, cr, uid, ids, part): res = super(sale_order, self).onchange_partner_opt1_id(cr, uid, ids, part) //blahblah return res
    • 所以我尝试构建一个与继承的模块具有相同规格的模块,而他从未被 OpenERP 调用过 ..class sale_order(osv.osv): _inherit = 'sale.order' def onchange_partner_opt1_id(self, cr, uid, ids, part): res = super(sale_order,self).onchange_partner_opt1_id(cr, uid, ids, part) res['value']['tag'] = 'test' return res 任何想法?谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-23
    • 2013-04-11
    • 2018-09-30
    • 1970-01-01
    • 2018-12-10
    相关资源
    最近更新 更多