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

I came across inheritance of ODOO.

Here each module inherit other where _inherit use that's fine we understood my that name new fields are create in that model.

But in new inherited class how it call parent class or original class methods.

Like in stock module, product model inhirited and new methods added and executed, also methods define in product can be call from stock i product model's method.

How this all work ? Please expert shall this features hows works ?

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

Python default overwrite class declaration, then how its works here ? Like product and stock module have class product declaration, where it do not overwrite previously declared class method and features ? How it keeps methods declared in other modules ?

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

See the link below, otherwise you can find a lot of example on addons module (e.g. sale_stock).

 https://www.odoo.com/forum/help-1/question/the-different-openerp-model-inheritance-mechanisms-whats-the-difference-between-them-and-when-should-they-be-used-46

I don't know if I have understood your question, here is an example :

suppose you want to override the create and the unlink methodes of the class account_invoice:

class account_invoice(osv.Model):
    _inherit = "account.invoice"

    def unlink(self, cr, uid, ids,  context={}):
        #do something here  
        return super(account_invoice, self).unlink(cr, uid, ids,  context) #invoke parent methode

    def create(self, cr, user, vals, context=None):
        inv_id = super(account_invoice,self).create(cr, user, vals, context=context) #invoke parent methode

         #do something here 
         return inv_id

 account_invoice()

 

Hopes that helps

 

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

I want to know how it works, by default paython with same named class, over write their mehtod. in odoo same name class can be used and also can be able to access all methods.

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

Odoo inheritance implementation is just python 2 implementation of class/object oriented programming.

But in new inherited class how it call parent class or original class methods.

Check https://docs.python.org/2/library/functions.html#super. Odoo orm makes sure every model extend any other model if the keyword _inherit is defined. The extension will behave like class inheritance in OPP sense. To learn more about the orm, check folder openerp/osv.

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

Its fine that _inherits add new fields in table. but how it keeps methods even with same class name or other class named. ? how it run time evaluate right methods and other self.methods even defined in multiple codes, let me know exact things, I had already dig many things.

Bài viết liên quan Trả lời Lượt xem Hoạt động
4
thg 2 25
2895
1
thg 8 24
2291
2
thg 11 24
3489
3
thg 10 23
14994
2
thg 2 23
2551