在官方模块的类中嵌入代码
-
在OE的采购申请中,有个按钮可以解发采购申请对象的 make_purchase_order 方法,按采购申请中的明细生成一张采购订单。
我想在这个方法中对采购订单的明细多写入一个字段。
除了直接改 make_purchase_order 的代码外,还可以怎么搞?直接改官方的代码,升级的时候比较不方便。 -
谢谢回复!
按我的理解 ,如果继承的话,只能整个方法继承或者不继承。但是我想在下面这个语句中间插入,该如何实现?
purchase_order_line.create(cr, uid, {
'order_id': purchase_id,
'name': product.partner_ref,
'product_qty': qty,
'product_id': product.id,
'product_uom': default_uom_po_id,
'price_unit': seller_price,
'date_planned': date_planned,
'notes': product.description_purchase,
'taxes_id': [(6, 0, taxes)],
#插入自定义字段的赋值
}, context=context) -
可能是我没表达清楚。
自定义字段已经加好了,现在给字段赋值的时候,要把赋值语句插入到官方模块的代码的一段for语句中间,我不想这么干,但是用继承又好像实现不了…… -
继承了对象就同时继承了该对象的所有属性和方法,你要对某个方法进行修改可以对该方法进行覆写,也就是重新定义该方法,为了达到代码共用的目的,可以使用Super函数运行原方法并获得该方法返回的结果并添加你的逻辑来修改该结果,或者首先执行你的逻辑,然后将你的逻辑产生的值变为你用Super函数调用原方法是的参数,如果你的修改逻辑是存在于原方法之中的,无法使用以上两种方法实现代码共用的目的,你可以直接将原方法中的代码复制到你的覆写的方法中并进行修改。
对与你的问题,可能不需要进行方法覆写就可以完成,比如在继承对象上增加_defaults属性即可。
另外做个广告,我们提供OpenERP开发培训,有兴趣者可以跟我们联系,联系方式在签名中 -
如楼上所说,获取返回值再处理, 以及调用super方法都搞不定,因为代码要嵌入到中间。我是想把采购申请的ID也传递到采购订单明细中去,作关联,因此也不能用_defaults实现。如此一来,就只有复制代码到子类的方法中了。
如果官方代码改变的话,那么,我也要跟着再复制一次,改一次了。
要是官方代码中相应的位置有调用空函数,然后再由开发者二次开发实现这个函数就好了。