← Blog / Odoo & ERP

Comprendre l’ORM d’Odoo

Dans cet article, nous expliquons brièvement comment fonctionne l’ORM d’Odoo.

par nasser

Architecture d'Odoo

Odoo est un ERP et un framework architecturé sous un modèle 3-tiers client-serveurs :

  1. le serveur de base de données PostgreSQL
  2. le serveur d’application Odoo basé sur Werkzeug
  3. le client web basé sur JavaScript, utilisant les frameworks JQuery et BackboneJS pour les versions inférieures à 13 et l’introduction du nouveau framework frontend OWL depuis la version 14 qui sera entièrement supporté à partir de la version 16

Structure des modules Odoo

Chaque module Odoo dépends d’un ou plusieurs modules et présente une structure qui contient tous les éléments nécessaires à son fonctionnement comme les modèles de base de données, les vues, les droits d’accès, etc. Par exemple, si vous allez dans le module point_of_sale, vous allez constater que ce dernier contient plus ou moins la structure suivante :
Les dossiers :

Puis les fichiers :

Les champs dans Odoo

L’ORM d’Odoo est très riche et contient de nombreux champs dont on peut modifier l’aspect en utilisant des widgets précis. En important l’objet odoo.fields, vous aurez accès aux champs suivant :

Il existe aussi deux types de champs particuliers (ou semi-relationnel) qui permettent d’interagir directement avec les données. Ce sont des méthodes qu’on peut ajouter aux champs plus haut via les attributs compute et related.

Il existe aussi des formats précis qu’on utilise lors des compute au niveau des champs Many2one(), One2Many() et Many2many(). Ces formats permettent de faire des actions bien précises lors des calculs notamment pour mettre à jour ou modifier des données dans ces champs. Ce sont les odoo command synthax.

Odoo Command Synthax

Présents dans la classe odoo.fields.Command, il s'agit de :

Pour en savoir plus, https://www.odoo.com/documentation/17.0/developer/reference/backend/orm.html#odoo.fields.Command

Utiliser les méthodes de l'ORM

L'ORM d'Odoo présente une cartographie relationnelle des objets, c'est-à-dire :

En effet, Odoo propose trois mécanismes différents pour étendre les modèles de manière modulaire :

  1. créer un nouveau modèle à partir d'un modèle existant
  2. ajouter de nouvelles informations à la copie tout en laissant le module d'origine tel quel
  3. étendre les modèles définis dans d'autres modules sur place remplaçant la version précédente.

Il est également important de noter ceci :

  1. le modèle odoo.models.Model permet d'instancier la classe sur la base de données lorsque le module de la classe est installé
  2. odoo.models.TransientModel permet d'afficher les fenêtres modales (wizard)
  3. odoo.models.AbstractModel est un modèle abstrait qui permet la création d'une classe abstraite destinée à être héritée par les modèles classiques (Model et TransientModel). Il est très utilisé dans l'édition des rapports (report)

À travers ces modèles, vous pouvez utiliser les décorateurs suivant pour implémenter vos solutions :

Il existe plusieurs autres décorateurs et autres informations détaillées que vous pouvez obtenir dans la documentation officielle d’Odoo.

Restez scotchés pour recevoir tous les prochains articles

Des cas concrets en video Rejoindre la chaîne YouTube pour aller plus loin →
Une question ou preoccupation ? Discutons-en ici →