Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

...

Alte APINeue API

Imports:

from openerp.osv import osv,

Klassenkopf:

class myclass(osv.osv):


my_pool = self.pool.get('mymodel')


from openerp odoo import models,


class myclass(models.Model):


my_pool = self.env['mymodel']

Search:

self.pool.get('mymodel').search(cr,uid,[('field','=', myfield)])


.search gibt id(s) zurück (erst durch ein browse wird das zu der ID zugehörige Objekt zurückgegeben)

Abfrage auf Vorhandensein der Auswertung eines .search:

if my_id:



self.env['mymodel'].search([('field','=', myfield)])  

cr,uid entfallen, sind im Objekt self enthalten und können per self._ids / self._uid angesprochen werden.

.search gibt Objekt(e) zurück (browse nicht mehr notwendig)


if len(myobject) > 0:

Felddefinition:

_columns = {
'my_field': fields.char('My field'),
}



my_field = fields.Char('My field')

my_pool.write(cr,uid,my_id) 

dazu äquivalent unlink()

my_object.write()

oder

my_pool.write(my_object.id)


Codeblock
my_ids = my_pool.search(cr,uid,[('field','=', myfield)]) 
for my_id in my_ids: 
           my_object = my_pool.browse(cr,uid,my_id) 
           ...



Codeblock
my_objects = my_pool.search([('field','=', myfield)])
for my_object in my_objects:
          ...


Verwendung und Überprüfung der Dekoratoren:

Bei der Konvertierung von Odoo 8 auf Odoo 10 ist es wichtig die Dekoratoren zu überprüfen, notfalls diese auch

hinzuzufügen (siehe neue API). So sieht in der alten API ein Methodenaufruf folgendermaßen aus:

def myfunction(self, cr, uid, ids, context):

@api.multi

def myfunction(self):

Hierbei ist es wichtig den @api.multi Dekorator zu verwenden. Ohne diesen Dekorator wird ein Odoo Error ausgelöst:

TypeError: myfunction() takes exactly 1 argument (2 given)


...