跳至內容
選單
此問題已被標幟
2 回覆
5119 瀏覽次數

How to "directly" override a method in the osv Model class, such as write, create, etc, so that any new model that I create inherits this functionality?
I mean, suppose I am extending res.partner, sale.order, purchase.order and a bunch of other models, and I want to override write for all of them, adding the same code to every one (like logging or something). Can I do this without overriding write in every single model?

頭像
捨棄

Already asked related questions 1) https://www.odoo.com/forum/help-1/question/how-to-override-method-of-basemodel-orm-in-odoo-v8-61799 2) https://www.odoo.com/forum/help-1/question/inherit-create-function-in-the-new-framework-62150#answer-62249

最佳答案

Hi Julian,

def unlink(self, cr, uid, ids, context=None):

     --- custome code --

after creating your method add this code

osv.osv.unlink = unlink
now your method is overrided the osv method
   

頭像
捨棄
作者

Thanks, this worked!

最佳答案

Hi Julian,

You can do as you want. Just see the following ex for the write method. It is override the write method of the osv.

from openerp.osv import orm

def custom_write(self, cr, uid, ids, vals, context=None):

 ..... Your code ...

    return True

orm.BaseModel.write = custom_write

 

頭像
捨棄
作者

Thanks this worked!

相關帖文 回覆 瀏覽次數 活動
1
3月 15
4818
3
11月 24
30038
1
12月 21
2765
0
12月 21
2330
3
12月 15
1367