Cet article explique comment on fait pour ajouter un champs et une méthode globale dans le but de les utiliser dans tous les modèles Odoo par défaut.
Il peut arriver que vous n’ayez pas besoin de toujours ré-implémenter un ensemble de méthode sur Odoo. Par exemple, vous voulez qu’un champs soit utilisé dans tous les modèles, de la même façon que les magic fields create_date et create_uid. Ou bien écrire une fonction une seule fois et la réutiliser sans import ni héritage.
Voici comment implémenter cette logique.
Faire un héritage du model base et y ajouter ses champs et méthodes.
Dans l’exemple suivant, nous créons le champs username de type compute pour enregistrer le nom de l'utilisateur qui cré une donnée quelque soit le modèle.
from odoo import fields, models, api
class BaseModelInherit(models.AbstractModel):
_inherit = "base"
username = fields.Char("User", compute="_compute_username")
@api.depends("create_uid")
def _compute_username():
if self.create_uid:
user = self.env["res.users"].browse(self.create_uid)
self.username = user.display_name
Maintenant vous pourrez faire l’héritage de n’importe quelle vue XML et afficher la valeur du champs username.
Pour en savoir plus sur l'ORM Odoo, vous pouvez lire notre article sur Comprendre l’ORM d’Odoo.