Dans Odoo, chaque champ d'un modèle joue un rôle crucial dans la définition et le fonctionnement des modules. Ces champs sont dotés d'attributs variés qui déterminent leur comportement, leur accessibilité et leur interaction avec la base de données et l'interface utilisateur. Que vous soyez un développeur expérimenté ou nouveau dans l'utilisation d'Odoo, comprendre ces attributs est essentiel pour créer des applications efficaces et personnalisées. Dans cet article, nous allons explorer les différents attributs des champs Odoo et leur importance dans le développement de modules. Cela vous aidera à optimiser vos modèles et à tirer le meilleur parti de la plateforme Odoo.
Descriptions des Attributs
- String: L'étiquette lisible de champ, utilisée dans les vues ou les rapports.
name = fields.Char(string="Name")
- Required: Rend un champ obligatoire. Le système n'autorisera pas l'enregistrement sans valeur pour ce champ.
name = fields.Char(string="Name", required=True)
- Readonly: Rend le champ non modifiable dans l'interface utilisateur, utile pour les données calculées ou de référence.
total = fields.Float(string="Total", readonly=True)
- OnDelete: Définit le comportement lorsqu'un enregistrement référencé par un champ Many2one est supprimé.
partner_id = fields.Many2one('res.partner', ondelete='cascade')
- Copy: Contrôle si la valeur du champ doit être copiée lors de la duplication de l'enregistrement.
description = fields.Text(copy=False)
- Tracking: Active le suivi des modifications pour des fins d'audit.
status = fields.Selection(tracking=True)
- Help: Fournit un texte d'infobulle pour le champ dans la vue formulaire.
age = fields.Integer(help="Enter your age.")
- Translate: Permet la traduction de la valeur du champ, essentiel pour le support multilingue.
description = fields.Text(translate=True)
- Search: Détermine si le champ peut être recherché dans la vue de recherche.
# Custom search function
def _search_function(self, operator, value):
# search logic
return [('id', 'in', ids)]
name = fields.Char(search='_search_function')
- Groups: Restreint la visibilité du champ à certains groupes d'utilisateurs.
confidential_info = fields.Char(groups="base.group_system")
- Index: Si True, un index est créé pour ce champ dans la base de données.
email = fields.Char(index=True)
- Default: Définit une valeur par défaut pour le champ lors de la création de nouveaux enregistrements.
age = fields.Integer(default=30)
- Compute: Lie le champ à une méthode calculée.
total = fields.Float(compute='_compute_total')
@api.depends('value1', 'value2')
def _compute_total(self):
for record in self:
record.total = record.value1 + record.value2
- Store: Détermine si la valeur du champ est stockée dans la base de données.
total = fields.Float(compute='_compute_total', store=True)
- Delegate: Utilisé dans l'héritage pour rendre les champs du modèle parent accessibles comme s'ils étaient des champs du modèle enfant.
# In a child class
_inherits = {'parent.model.name': 'parent_id'}
parent_id = fields.Many2one('parent.model.name', ondelete='cascade', delegate=True)
- Inverse: Pour les champs calculés, spécifie la méthode qui définit la valeur du champ.
name = fields.Char(compute='_compute_name', inverse='_inverse_name')
def _inverse_name(self):
for record in self:
# inverse logic
- Depends: Pour les champs calculés, liste les champs dont le calcul dépend.
country_code = fields.Char(related='country_id.code', depends=['country_id'], readonly=True)
- Selection: Fournit une liste de valeurs possibles pour les champs de type sélection.
state = fields.Selection(selection=[
('draft', 'Draft'),
('confirmed', 'Confirmed'),
('done', 'Done'),
], default='draft')
Nous espérons que cet aperçu des attributs des champs Odoo et leurs exemples de code vous a été utile. Ces éléments sont essentiels pour exploiter pleinement les capacités d'Odoo et pour développer des modules efficaces et personnalisés. N'hésitez pas à partager vos expériences, astuces ou questions dans les commentaires ci-dessous. Vos retours enrichissent notre communauté et aident chacun à se développer dans l'univers d'Odoo. Si vous avez des suggestions ou des points spécifiques que vous aimeriez voir abordés dans de futurs articles, faites-le nous savoir !
Comprendre les Attributs des Champs dans Odoo : Un Guide Essentiel