Comment ajouter un champs et une méthode qui s’exécute dans tous les modèles Odoo par défaut ?

nasser 28/04/2022 (21:49) GMT

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.

Veuillez-vous connecter poster un commentaire

Projets et Missions Freelances pour Développeurs

Explore notre sélection de missions adaptées à ton expertise et à ta disponibilité pour mettre en valeur ton savoir-faire et gagner de l'argent.

Trouver un projet