R)

Relationale Felder

Relationale Felder verknüpfen Datensätze, entweder desselben Modells (Hierarchien) oder zwischen verschiedenen Modellen.Relationale Feldtypen sind:Many2one(other_model, ondelete='set null')Eine einfache Verknüpfung zu einem anderen Objekt:print foo.other_id.name

Relationen -  Beziehungen zwischen den Modellen

Wir haben ein Paar "Basis"-Felder gesehen, die direkt im Datensatz gespeichert sind. Es gibt eine Reihe von Basisfeldern. Die zweite große Kategorie von Feldern ist relational und wird verwendet, um Datensätze miteinander zu verknüpfen (innerhalb eines Modells oder modellübergreifend). Zur Demonstration erstellen wir ein Kursmodell. Jeder Kurs sollte ein Lehrerfeld haben, das mit einem einzigen Lehrerdatensatz verknüpft ist, aber jeder Lehrer kann viele Kurse unterrichten: Diskussionen und Benachrichtigungen

odoo stellt technische Modelle zur Verfügung, die nicht direkt die Geschäftsanforderungen erfüllen, sondern die Geschäftsobjekte um Fähigkeiten erweitern, ohne dass diese von Hand erstellt werden müssen.

Eines davon ist das Chatter-System, Teil des E-Mail- und Messaging-Systems von odoo, das jedem Modell Benachrichtigungen und Diskussionsstränge hinzufügen kann. Das Modell muss lediglich mail.thread _inheritieren und das Feld message_ids in seiner Formularansicht hinzufügen, um den Diskussions-Thread anzuzeigen. Diskussions-Threads sind pro Datensatz.

Für unsere Akademie ist es sinnvoll, die Diskussion von Kursen zuzulassen, um z.B. Terminänderungen oder Diskussionen zwischen Lehrern und Assistenten zu behandeln: Am Ende jedes Kursformulars gibt es nun einen Diskussionsstrang und die Möglichkeit für Benutzer des Systems, Nachrichten zu hinterlassen und Diskussionen zu bestimmten Kursen zu verfolgen oder nicht.

Verkaufen von Kursen

Odoo bietet auch Geschäftsmodelle an, die es erlauben, Geschäftsbedürfnisse direkter zu nutzen oder sich dafür zu entscheiden. Zum Beispiel richtet das Modul website_sale eine E-Commerce-Site ein, die auf den Produkten im Odoo-System basiert. Wir können Kursabonnements leicht verkaufbar machen, indem wir unsere Kurse zu spezifischen Produktarten machen.

Statt der bisherigen klassischen Vererbung bedeutet dies, unser Kursmodell durch das Produktmodell zu ersetzen und die Produkte vor Ort zu erweitern (um alles, was wir brauchen, hinzuzufügen).

Zuallererst müssen wir eine Abhängigkeit von website_sale hinzufügen, damit wir sowohl Produkte (über den Verkauf) als auch die E-Commerce-Schnittstelle erhalten:

Wenn dies installiert ist, sind nun einige wenige Kurse im Shop verfügbar, auch wenn sie möglicherweise gesucht werden müssen.

Um ein Modell an Ort und Stelle zu erweitern, wird es vererbt, ohne ihm einen neuen _Namen zu geben - product.template verwendet bereits das Diskussionssystem, so dass wir es aus unserem Erweiterungsmodell entfernen können. Wir erstellen unsere Kurse so, wie sie standardmäßig veröffentlicht werden, so dass sie ohne Anmeldung angezeigt werden können.