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.