Skip to Content
Meniu
Trebuie să fiți înregistrat pentru a interacționa cu comunitatea.
Această întrebare a fost marcată
2 Răspunsuri
4639 Vizualizări

Hello, I have Odoo8.

I have a computed field which definition of method is: def _actualiza_monto(self) so my only parameter is self. In this method I need to call other methods of this class which requires cr, uid and an integer value (in my case is self.id). The method definition is:

def mymethod(self, cr, uid, id_neccesary, context=None): ...

When I try to call the method with syntax self.mymethod(self.env.cr, self.env.uid, self.id, self.env.context) I get the error "5 parameters is needed, 8 given". Why? How it works? Thanks!

Imagine profil
Abandonează
Cel mai bun răspuns

You are coding in a method which has API styling... hence your self will be a environment browse variable..

Hence when you are trying to call the method of same object, you need not to pass all the argument,,

just write it like this: self.mymethod()

Note:

calling of method is depends on the convention of the object declaration

Say user object and partner object:

def sample_method(self):
    parter_obj = self.pool.get('res.partner')
    user_env = self.env['res.users']     
  


    partner_obj.calling_method(cr, uid, new_partner_id)  [Old style since object is declared as Pool]
    new_user_browse.calling_method()  [API style since object is declared as Environment]

 

I have written both styling in API style method, hope you got the difference

Imagine profil
Abandonează
Cel mai bun răspuns

AFAIK, computed field would receive at least cr, uid, ids, field_name, and arg.  You may need to update the _actualiza_monto method to follow the signature.  Which is def _actualiza_monto(self, cr, uid, ids, field_name, arg, context=None).

Imagine profil
Abandonează
Related Posts Răspunsuri Vizualizări Activitate
2
dec. 22
14931
1
nov. 21
5054
0
ian. 21
2352
8
mai 20
7938
0
dec. 23
2990