API Referenz

Modell

Ein Modell benötigt mindestens einen Namen und eventuell erbt es noch Felder und Methoden eines anderen Modells. 

_name

Name der Tabelle in der Datenbank.(Es werden Punkte benutzt um Namensräume zu trennen) Beispiel:

_name = 'requiremnet.line'

_inherit

Erben von Feldern und Methoden eines anderen Modells.

_inherit = "sale.order.line"

Feldtypen

fields.Char

Ein Feld das aus mehreren Zeichen(Characters) besteht. Char in SQL Char kann bis zu 255 Zeichen speichern.

name = fields.Char('requirement')

fields.Text

Text kann bis zu 65535 Zeichen speichern Text in SQL.

text = fields.Text(string='text')

fields.Binary

Das Binärformat wird in diesem Fall per widget als Bild ausgegeben. Beispiel:

image = fields.Binary('model')

fields.Html

Wird benutzt um HTML zu speichern und bringt ein entsprechendes widget mit.

html = fields.Html(string='HTML')

fields.Integer

Wird zum speichern ganzer Zahlen verwendet.

zahl = fields.Integer(string='Zahl')

fields.Float

Speichert Kommazahlen

kzahl = fields.Float(string='Kommazahl')

fields.Date

In diesem Feldtyp wird ein Datum gespeichert.

date = fields.Date(string='Datum')

Beziehungen

many2one

Aus einer Tabelle mit mit mehreren Einträgen kann einer und nur einer ausgewählt werden. Entspricht der n zu 1 Beziehung im ER-Modell.

Beispiel:

fields.Many2one('model')

many2many

Es kann mehr als ein Eintrag aus einer anderen Tabelle ausgewählt werden. Entspricht der n zu m Beziehung im ER-Modell.

Beispiel:

fields.Many2many('model')

one2many

Der Eintrag in einer Tabelle wird aus mehreren einer anderen Tabelle ausgewählt. Dies ist das inverse von many2one, entsprechend 1 zu n im ER Modell.

Beispiel:

fields.One2many('model')

Paramater

string

Das Feld erhält diesen Namen auf der Oberfläche.

compute

Berechnete Felder werden nicht in der Datenbank gespeichert.

complete_name = fields.Char(compute='_name_get_fnc', type="char", string="name")

Dem compute Pramater wird die auszuführende Methode übergeben. In diesem Fall wird ein rekursiver Baum durchlaufen um alle Abschnitte und deren Unterabschnitte anzulegen und auszugeben.

@api.multi
def name_get(self):
    def get_names(section):
        res = []
        while section:
            res.append(section.name)
            section = section.parent_id
        return res
    return [(section.id, " / ".join(reversed(get_names(section)))) for section in self]

def _name_get_fnc(self):
    res = self.name_get()

    names = []
    for  i in res:
        names.append(i[1])

    for id, name in itertools.izip(self, names):
        id.complete_name = name
    return res


required

Feld muss ausgefüllt werden. Odoo überprüft ob ein Wert ausgewählt wurde und gibt eine Fehlermeldung zurück falls nicht(Beispiel: requirement = fields.Many2one('requirement', string="requirement", required=True).

translate

Es kann eine Übersetzung hinterlegt werden.

Dekoratoren

@api.multi

Enthält die Daten des entsprechenden Modells und es kann über diese iteriert werden.

@api.model

Alte api Aufrufe werden zur neuen api konvertiert.

@api.onchange('Feld')

Methoden mit diesem Dekorator werden ausgeführt sobald sich das angegebene Feld ändert.