Aller au contenu principal
Peef

← Articles · · Engineering Odoo

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

Par Nasser, développeur Odoo depuis 2016, certifié Odoo, membre de l'OCA.

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.

Sur le même sujet

Continuer la lecture

Tous les articles sur ce sujet

Newsletter · une fois par mois

Un cas réel de production Odoo, chaque mois

Ce que j'ai fait sur une migration, une intégration ou une chaîne de production : le code, ce qui a cassé, et pourquoi. Rien d'autre.

Aucun spam. Désinscription en un clic.