Zum Inhalt springen

ir.model: Odoo‑Modellregistrierung verständlich erklärt

Ein umfassender Leitfaden zum Metadatenmodell, das jede einzelne Odoo-Modellklasse im System beschreibt
11. März 2026 durch
ir.model: Odoo‑Modellregistrierung verständlich erklärt
Dasolo
| Noch keine Kommentare

Einleitung


In Odoo legen Modelle die Struktur und Speicherung Ihrer Geschäftsdaten fest. Alles — von Angeboten über Rechnungen bis hin zu Ansprechpartnern — existiert als Datensatz in einem Modell und wird so in der Datenbank organisiert.


Für Entwickler und funktionale Berater ist ein gutes Verständnis der Modelle unerlässlich. Modelle sind das Fundament der Odoo-Datenarchitektur: Sie definieren Felder, Beziehungen und die Geschäftslogik, die Ihr System lenkt.


Wo aber speichert Odoo die Informationen über alle vorhandenen Modelle? Genau hier kommt ir.model ins Spiel: Diese Tabelle fungiert als zentrales Register mit Metadaten zu jedem Modell. Ob bei Eigenentwicklungen, API-Inspektionen oder beim Debugging — früher oder später arbeiten Sie mit ir.model.

Was ist das ir.model?


Das ir.model ist im Kern das Metadaten-Register von Odoo: Für jedes definierte Modell existiert ein Eintrag in dieser Tabelle. Sobald Sie ein neues Modell per Python anlegen oder mit Odoo Studio erzeugen, legt Odoo ein entsprechendes ir.model-Record an oder aktualisiert es.


Dieses Modell gehört zum Basismodul von Odoo und ist Teil des Framework-Kerns. Egal ob reguläres Modell, abstraktes Modell oder transientes (temporäres) Modell — zu jedem existierenden Modell gibt es einen Eintrag in ir.model (außer bei reinen abstrakten Klassen ohne Datenbanktabelle).


Die Definition von ir.model liegt im Core-Modul; eng verknüpft ist die Tabelle ir.model.fields, die Metainformationen zu einzelnen Feldern speichert. Zusammen ermöglichen diese beiden Modelle die Programmiereinblicke und Reflexion, mit denen Odoo seine Strukturen dynamisch handhabt.


Entwickler greifen auf ir.model, wenn sie verfügbare Modelle auflisten, Vererbungsbäume prüfen oder generische Werkzeuge bauen wollen, die mit beliebigen Modellen arbeiten. Über die Odoo-API (XML-RPC/JSON-RPC) lassen sich diese Metadaten ebenfalls auslesen.

Wichtige Felder im Modell


Die folgenden Felder in ir.model sind besonders relevant. Wenn Sie diese kennen, finden Sie sich schneller im Modell-Register zurecht und können gezielter arbeiten.


1. name

Typ: Char. Menschlich lesbarer Modellname, meist übersetzbar. Er taucht in den Technischen Einstellungen und Entwicklerwerkzeugen auf und dient als Label beim Durchsuchen der Modelle.


2. model

Typ: Char. Der technische Modellname, den Sie im Code verwenden (z. B. res.partner oder sale.order). Dieses Feld ist erforderlich und indexiert, damit Abfragen schnell laufen.


3. info

Typ: Text. Freitext für zusätzliche Hinweise oder Dokumentation zum Modell. Oft leer, aber nützlich für interne Anmerkungen.


4. state

Typ: Selection. Zeigt an, ob das Modell aus einem Odoo-Modul stammt (base) oder manuell angelegt wurde (manual), etwa per Studio. Base-Modelle sind stärker geschützt, manuelle Modelle lassen sich flexibler anpassen.


5. transient

Typ: Boolean. Kennzeichnet temporäre (transiente) Modelle. Bei True werden Datensätze automatisch bereinigt — typisch für Assistenten und temporäre Eingaben.


6. field_id

Typ: One2many (ir.model.fields). Liste aller Felder, die auf diesem Modell definiert sind. Jedes ir.model.fields-Record beschreibt ein Feld mit Name, Typ und weiteren Attributen.


7. access_ids

Typ: One2many (ir.model.access). Legt die Zugriffsrechte fest: welche Gruppen Leserechte, Schreibrechte, Erstellen- und Löschrechte haben. Kernbestandteil der Sicherheitskonfiguration.


8. rule_ids

Typ: One2many (ir.rule). Record-Regeln, die auf Zeilenebene einschränken, welche Datensätze ein Benutzer sehen oder bearbeiten darf.


9. inherited_model_ids

Typ: Many2many (ir.model). Referenzen auf übergeordnete Modelle bei Modellvererbung. Wenn ein Modell erweitert wird, erscheinen die Elternmodelle hier als Verknüpfung.


10. modules

Typ: Char. Ein berechnetes Feld, das auflistet, in welchen Modulen das Modell definiert oder erweitert wird — hilfreich, um Abhängigkeiten nachzuvollziehen.


11. sort

Typ: Integer. Reihenfolge für die Anzeige in den Technischen Einstellungen; kleinere Werte erscheinen oben und helfen beim Ordnen langer Listen.


12. constrains

Typ: Text. Python-Constraint-Definitionen (z. B. @api.constrains). Hier kann Validierungslogik in Textform hinterlegt werden.


13. post_constrains

Typ: Text. Post-Constraint-Code — ähnlich wie constrains, aber für nachgelagerte Prüfungen oder Aktionen.


14. sql_constraints

Typ: Text. Definitionen für Datenbank-Constraints (z. B. UNIQUE). Diese stellen Integrität auf DB-Ebene sicher.


15. view_ids

Typ: One2many (ir.ui.view). Berechnetes Feld mit den Views, die diesem Modell zugeordnet sind — nützlich für UI-Inspektionen.


16. record_count

Typ: Integer. Berechnetes Feld mit der Anzahl der Datensätze im Modell — praktisch für Analysen und Monitoring.


17. display_name

Typ: Char. Darstellungsname, der beispielsweise in Many2one-Feldern angezeigt wird; häufig eine Kombination aus name und model.


18. create_date

Typ: Datetime. Zeitpunkt der Anlage des ir.model-Eintrags; wird von Odoo automatisch gepflegt.


19. create_uid

Typ: Many2one (res.users). Benutzer, der den Eintrag angelegt hat — wichtig für Audits.


20. write_date

Typ: Datetime. Zeitpunkt der letzten Änderung; ebenfalls automatisch verwaltet.


21. write_uid

Typ: Many2one (res.users). Benutzer, der zuletzt bearbeitet hat — nützlich für Nachvollziehbarkeit.


22. active

Typ: Boolean. Weicher Lösch- bzw. Archivierungsindikator. Auf False gesetzte Einträge gelten als inaktiv oder veraltet.


23. id

Typ: Integer. Die eindeutige Datenbank-ID des ir.model-Records; wird oft in API-Aufrufen verwendet.


24. restrict_functionality

Typ: Boolean. Markiert Modelle mit eingeschränktem Funktionsumfang in bestimmten Odoo-Editionen (z. B. Enterprise vs. Community).


25. is_mail_thread

Typ: Boolean. Gibt an, ob das Modell über die Chatter-/Mail-Funktionalität verfügt (Nachrichten, Follower).


26. is_mail_activity

Typ: Boolean. Zeigt, ob das Modell Aktivitäten unterstützt (Planner, nächste Aktion).

Wie dieses Modell in Geschäftsprozessen eingesetzt wird


1. Technische Einstellungen und Konfiguration

Administratoren nutzen das Menü der Technischen Einstellungen, um Modelle zu durchsuchen. Die ir.model-Einträge bestimmen, welche Modelle dort auftauchen und zeigen zentrale Infos wie Namen, Beschreibung und Anzahl der Felder an.


2. Verwaltung von Zugriffsrechten

Zur Sicherheitskonfiguration werden Gruppenrechte vergeben. Die access_ids in ir.model legen fest, welche Gruppen welche CRUD-Rechte auf ein Modell haben — ein zentraler Hebel für Berechtigungen.


3. Anpassungen mit Odoo Studio

Wenn Anwender in Studio neue Modelle erstellen, erzeugt Odoo entsprechende ir.model- und ir.model.fields-Einträge mit dem Status manual. So werden selbst benutzerdefinierte Strukturen sauber im System registriert.


4. API- und Integrations-Discovery

Externe Anwendungen können über XML-RPC oder JSON-RPC die ir.model-Daten abfragen, um verfügbare Modelle und deren Aufbau zu entdecken — ideal, um Integrationen dynamisch aufzusetzen statt hart zu codieren.


5. Modulentwicklung und Debugging

Beim Entwickeln prüfen Sie ir.model, um Vererbungen nachzuvollziehen (inherited_model_ids) und alle Felder eines Modells über field_id zu inspizieren — das vereinfacht Erweiterungen und Fehlersuche.

Wie Entwickler das Modell erweitern


Direkt am ir.model zu arbeiten ist selten nötig. Meist interagieren Entwickler indirekt: Beim Laden eines Moduls aktualisiert Odoo das Register automatisch, sodass man nur neue Modelle oder Felder definiert.


Modellvererbung

Wenn Sie in Python etwa _inherit = 'res.partner' verwenden, aktualisiert Odoo das ir.model für res.partner und verlinkt das neue Modell über inherited_model_ids mit dem Elternmodell. So bleibt das Registry konsistent und Vererbungsbeziehungen sichtbar.


Felder hinzufügen

Beim Ergänzen von Feldern legt Odoo neue ir.model.fields-Einträge an, die über model_id mit dem entsprechenden ir.model verbunden sind. Das zentrale ir.model-Record selbst wird dabei normalerweise nicht direkt verändert.


Python-Erweiterungen

Ir.model-Methoden überschreibt man in der Praxis kaum — das Modell ist Teil des Kernframeworks. Falls Verhalten angepasst werden muss, erweitert man in der Regel die Modelle, die durch ir.model beschrieben werden, statt ir.model selbst zu patchen.


Odoo Studio

Odoo Studio erzeugt automatisch ir.model- und ir.model.fields-Einträge für selbst erstellte Modelle — komplett ohne Code. Transiente Modelle werden durch das transient-Flag gekennzeichnet; abstrakte Modelle ohne eigene DB-Tabelle führen dagegen nicht zu ir.model-Einträgen.

Best Practices


  • Nutzen Sie ir.model zur Laufzeit-Inspektion: Bei Integrationen fragen Sie die Modellliste dort ab, statt Modellnamen zu hardcodieren — das macht Ihre Integrationen flexibler und update-resistenter.
  • Suchen Sie Modelle über das Feld model: Es ist indexiert und damit schnell. Wenn Sie Metadaten zu einem bestimmten Modell brauchen, ist die Suche nach dessen technischem Namen der richtige Weg.
  • Prüfen Sie inherited_model_ids vor Erweiterungen: Verstehen Sie die Vererbungsstruktur, bevor Sie ein Modell anpassen, um Seiteneffekte zu vermeiden.
  • Lesen Sie ir.model über die API (XML-RPC/JSON-RPC) aus: So bauen Sie Integrationen oder Studio-ähnliche Tools ohne direkte Änderungen an der Registry.
  • Verwenden Sie ir.model.fields für Detail-Inspektionen: field_id listet alle Felder mit Typen und Attributen — ideal für dynamische UI-Generatoren oder Migrationsskripte.

Häufige Fehler


  • Modifizieren Sie ir.model nicht direkt: Das Registry-Management übernimmt Odoo; manuelle Änderungen können das System destabilisieren oder bei Updates überschrieben werden.
  • Ir.model nicht mit der Python-Klasse verwechseln: ir.model ist ein Datenbank-Record mit Metadaten, die eigentliche Logik lebt in der Python-Modellklasse — beides hängt zusammen, ist aber nicht identisch.
  • Nicht alle Klassen erzeugen ir.model-Einträge: Abstrakte Modelle ohne eigene Tabelle werden nicht als ir.model-Records angelegt.
  • Transiente Modelle sind vergänglich: Das transient-Flag bedeutet, Daten werden regelmäßig bereinigt — solche Modelle eignen sich nicht für dauerhafte Speicherung.
  • Ir.model ohne Filter abfragen ist ineffizient: Produktivsysteme enthalten hunderte Modelle — filtern Sie daher gezielt nach model-Namen oder passenden Suchdomänen.

Fazit


Ir.model ist das zentrale Register aller Odoo-Modelle und speichert die Metadaten, die Sie brauchen, um das System zu verstehen. Wenn Sie die wichtigsten Felder und die Beziehung zu ir.model.fields kennen, navigieren Sie sicherer durch Odoos Datenarchitektur.


Egal ob Sie als Berater die Technischen Einstellungen sondieren oder als Entwickler API-Integrationen bauen: Wer ir.model versteht, arbeitet schneller, vermeidet Fehler und trifft bessere Architekturentscheidungen.

Brauchen Sie Unterstützung bei Ihrer Odoo-Einführung?


Dasolo unterstützt Unternehmen bei Einführung, Anpassung und Optimierung von Odoo. Unser Schwerpunkt liegt auf API-Integrationen und Individualentwicklung — mit tiefem Verständnis der Odoo-Datenarchitektur und Modellen wie ir.model.


Wenn Sie Hilfe bei Implementierung, individuellen Modulen oder Integrationen benötigen, sprechen Sie uns an. Vereinbaren Sie eine Demo um Ihr Projekt zu besprechen.

ir.model: Odoo‑Modellregistrierung verständlich erklärt
Dasolo 11. März 2026
Diesen Beitrag teilen
Anmelden , um einen Kommentar zu hinterlassen