Bỏ qua để đến Nội dung
Menu
Câu hỏi này đã bị gắn cờ
2 Trả lời
5095 Lượt xem

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?

Ảnh đại diện
Huỷ bỏ

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

Câu trả lời hay nhất

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
   

Ảnh đại diện
Huỷ bỏ
Tác giả

Thanks, this worked!

Câu trả lời hay nhất

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

 

Ảnh đại diện
Huỷ bỏ
Tác giả

Thanks this worked!

Bài viết liên quan Trả lời Lượt xem Hoạt động
1
thg 3 15
4795
3
thg 11 24
30019
1
thg 12 21
2759
0
thg 12 21
2324
3
thg 12 15
1367