Bonjour aux passionnés d'Odoo ! Aujourd'hui, explorons un aspect crucial mais souvent méconnu d'Odoo : les attributs de modèles. Contrairement aux champs de modèle, qui stockent des données, les attributs de modèles sont des paramètres spéciaux qui définissent la structure et le comportement des modèles dans Odoo.
1. Qu'est-ce qu'un attribut de modèle ?
Un attribut de modèle dans Odoo est une sorte de directive intégrée qui informe l'ORM (Object-Relational Mapping) d'Odoo sur la manière de gérer un modèle spécifique. Ces attributs influencent tout, de la manière dont les modèles sont nommés et hérités, à la façon dont les données sont ordonnées et validées.
2. Les attributs de modèle essentiels dans Odoo :
- name : L'identifiant unique du modèle. Il est crucial pour le référencement interne dans Odoo.
- _description : Une description textuelle du modèle, utile pour la documentation et la clarté.
- _inherit : Permet l'héritage de modèles existants, ajoutant ou surchargeant les fonctionnalités.
- _order : Définit l'ordre par défaut de tri des enregistrements.
- _rec_name : Spécifie le champ principal pour l'affichage des noms des enregistrements.
Exemple des 5 premiers attributs :
class ResPartner(models.Model):
_name = "res.partner"
_description = "Contact"
_inherit = "res.partner.parent"
_order = "sequence asc"
_rec_name = "display_name"
- res.partner est le nom technique du modèle.
- La description donnée au modèle res.partner est "Contact", c'est un peu comme le nom du modèle mais pas d'un point de vue technique.
- Le modèle hérite d'un autre modèle "res.partner.parent", ce qui lui permet d'accéder à ses champs et méthodes.
- L'ordre d'affichage des enregistrements se fera par ordre croissant au niveau du champ sequence.
- Et pour finir, la valeur affichée lors d'une recherche sur ce modèle, sera la valeur présente dans le champ "display_name"
- _table : Permet de définir un nom de table spécifique dans la base de données.
- _sql_constraints : Des contraintes au niveau de la base de données pour assurer l'intégrité des données.
- _inherits : Pour l'héritage SQL, où les champs du modèle parent sont intégrés dans le modèle enfant.
class ResPartner(models.Model):
_inherit = "res.partner"
_sql_constraints = [('unique_ref', 'UNIQUE(ref)', 'Ref must be unique!')]
ref = fields.Char(string="Ref")
L'exemple ci-dessous montre l'utilisation de l'attribut _sql_constraints afin de définir l'unicité d'un champ via une contrainte SQL
3. Conclusion : L'utilité des attributs de modèle
Comprendre les attributs de modèles dans Odoo est essentiel pour tout développeur travaillant avec cette plateforme. Ils jouent un rôle clé dans la définition de la structure et du comportement des modèles, ce qui affecte directement la façon dont les applications sont construites et fonctionnent. Maîtriser ces attributs peut conduire à une meilleure conception de module et à une utilisation plus efficace des fonctionnalités d'Odoo.
Si cet article vous a plu, n'hésitez pas à lire le suivant, qui parle des attributs des champs, tout aussi importants !
Comprendre les attributs de modèles Odoo : Clés pour une gestion de données efficace