Aller au contenu principal
Peef

← Articles

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

· Odoo

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.



Articles liés

Newsletter

Un cas réel Odoo et la méthode pour aller plus vite avec l'IA, chaque mois.

Aucun spam. Désinscription en un clic.

À propos de l'auteur

Je suis Nasser, développeur Odoo depuis 2016. Je travaille sur les intégrations et les migrations Odoo, avec le stock et la production. Certifié Odoo, membre de l'OCA, basé en Allemagne.

Ici, pas de théorie : les articles et les vidéos sortent de missions réelles, avec le code, les erreurs et ce que je ferais autrement la prochaine fois.

Voir la chaîne YouTube →