Champs et widgets¶
Fields structure the models of a database. If you think of a model as a table or spreadsheet, fields are the columns and records are the individual rows. Fields also define the type of data that is stored within them. The way in which a field’s data is presented and formatted on the UI is controlled by its widget.
With Studio, it is possible to:
add new fields to your database. From a technical point of view, there are 15 field types in Odoo. However, you can choose from 21 field types in Studio, as some field types are available more than once with a different default widget;
add existing fields, i.e., fields that already exists on a model, to any view of that model;
Studio fields vs. property fields
Fields created using Studio are saved as columns in your Odoo database. Property fields, on the other hand, act as pseudo-fields; they are shared by all records that are linked to the same parent record (e.g., for tasks, the project, or for a product, the product category), but they are not saved as columns in your database.
Example
Adding a Deadline field to the form view of a task using Studio makes that field visible in every task in your database. Adding a Special instructions property field to a task makes the field visible in all tasks within the same project (i.e., its parent) while other projects’ tasks remain unaffected.
Field types¶
Fields can be broadly divided into two categories:
Simple fields, which contain basic values, such as text, numbers, files, etc.
Relational fields, which are used to link and display the data from records on another model.
AI fields
AI fields are essentially standard Odoo fields with added AI capabilities that allow their values to be generated automatically through prompts.
Champs simples¶
Note
Non-default widgets, when available, are presented as bullet points or sub-headings.
Texte (char)¶
Le champ Texte est utilisé pour un texte court contenant n’importe quel caractère. Une ligne de texte est affichée lorsque le champ est complété.
Badge : permet d’afficher la valeur à l’intérieur d’une forme arrondie, semblable à une étiquette. Il n’est pas possible de modifier la valeur dans l’UI, mais il est possible de définir une valeur par défaut.
Copier dans le presse-papiers : les utilisateurs peuvent copier la valeur en cliquant sur un bouton.
Email : la valeur devient un lien mailto cliquable.
Image : permet d’afficher une image à l’aide d’une URL. Il n’est pas possible de modifier la valeur manuellement, mais il est possible de définir une valeur par défaut.
Note
This works differently from selecting the Image field directly, as the image is not stored in Odoo when using a Text field with the Image widget. For example, it can be useful if you want to save disk space.
Téléphone : la valeur devient un lien tel cliquable.
Astuce
Cochez Activer les SMS pour ajouter une option permettant d’envoyer un SMS directement depuis Odoo à côté du champ.
URL : la valeur devient une URL cliquable.
Example
Texte multiligne (text)¶
Le champ Texte multiligne est utilisé pour un texte plus long contenant n’importe quel type de caractère. Deux lignes de texte sont affichées sur l’UI lorsque le champ est complété.
Copier dans le presse-papiers : les utilisateurs peuvent copier la valeur en cliquant sur un bouton.
Example
Entier (integer)¶
Le champ Entier est utilisé pour tous les nombres entiers (positifs, négatifs, ou zéro, sans décimale).
Graphique circulaire : affiche la valeur à l’intérieur d’un cercle de pourcentage, généralement pour une valeur calculée. Il n’est pas possible de modifier la valeur sur l’UI, mais il est possible de définir une valeur par défaut.
Barre de progression : affiche la valeur à côté d’une barre de progression, généralement pour une valeur calculée. Il n’est pas possible de modifier le champ manuellement, mais il est possible de définir une valeur par défaut.
Poignée : affiche une icône de poignée pour ordonner manuellement les enregistrements dans la vue Liste.
Example
Décimale (float)¶
Le champ Décimale est utilisé pour tous les nombres décimaux (positifs, négatifs, ou zéro, avec décimale).
Note
Les nombres décimaux sont affichés avec deux décimales après la virgule sur l’UI, mais ils sont stockés dans la base de données avec plus de précision.
Monétaire : similaire à l’utilisation du champ Monétaire. Il est recommandé d’utiliser ce dernier car il offre plus de fonctionnalités.
Pourcentage : affiche un caractère de pourcentage
%après la valeur.Graphique circulaire : affiche la valeur à l’intérieur d’un cercle de pourcentage, généralement pour une valeur calculée. Il n’est pas possible de modifier ce champ manuellement, mais il est possible de définir une valeur par défaut.
Barre de progression : affiche la valeur à côté d’une barre de progression, généralement pour une valeur calculée. Il n’est pas possible de modifier le champ manuellement, mais il est possible de définir une valeur par défaut.
Heure : la valeur doit respecter le format hh:mm, avec un maximum de 59 minutes.
Example
Monétaire (monetary)¶
Le champ Monétaire est utilisé pour toutes les valeurs monétaires.
Note
Lorsque vous ajoutez d’abord un champ Monétaire, vous avez tendance à vouloir ajouter un champ Devise s’il n’y en a pas déjà un sur le modèle. Odoo propose d’ajouter le champ Devise pour vous. Une fois qu’il est ajouté, ajoutez de nouveau le champ Monétaire.
Example
Html (html)¶
Le champ Html est utilisé pour ajouter du texte qui peut être édité en utilisant l’éditeur HTML d’Odoo.
Texte multiligne : désactive l’éditeur HTML d’Odoo pour permettre l’édition de HTML brut.
Example
Date (date)¶
Le champ Date est utilisé pour sélectionner une date sur un calendrier.
Relative Date: expresses the field value in relation to the current date using relative terms such as Yesterday, Today, In 3 days, 2 months ago, etc. This field should be set to Read only.
Example
Date & Heure (datetime)¶
Le champ Date & Heure est utilisé pour sélectionner une date sur un calendrier et une heure sur une horloge. L’heure actuelle de l’utilisateur est automatiquement utilisée si aucune heure n’est définie.
Astuce
En plus des propriétés générales, certaines propriétés spécifiques sont disponibles pour les champs Date et heure qui ont le widget Date et heure ou Plage de dates défini.
Plage de dates (daterange)¶
Le widget Plage de dates permet d’afficher une période définie par une date de début et une date de fin sur une seule ligne. Une plage de dates peut avoir une date de début et de fin obligatoires, par ex., pour un événement de plusieurs jours, ou permettre une date de début ou de fin facultative, par ex., pour une intervention de services sur site ou une tâche de projet.
L’ajout d’une plage de dates nécessite deux champs : un champ Date et heure avec le widget Plage de dates défini et un autre champ sélectionné comme date de début ou date de fin. Ce champ sous-jacent peut être un champ Date ou Date et heure existant, ou un champ créé spécifiquement à cet effet.
Pour ajouter une plage de dates :
Identifier un champ Date ou Date & heure existant pouvant être utilisé comme champ de date de début/fin sous-jacent, ou en ajouter un nouveau. Si la plage de dates :
possède une date de début et une date de fin obligatoires, ce champ peut être soit la date de début, soit la date de fin ; le résultat est le même.
autorise une date de début ou de fin facultative, ce champ est respectivement la date de début ou la date de fin.
Astuce
Pour éviter d’afficher deux fois la même information, le champ de date de début/fin sous-jacent peut être rendu invisible en activant Invisible ou supprimé de la vue en cliquant sur Retirer de la vue.
Ajouter un champ Date & heure et définir le champ Widget sur Plage de dates.
Saisir un Libellé approprié.
Sélectionner le champ de date de début/fin sous-jacent dans le menu déroulant Champ de date de début ou Champ de date de fin, selon le cas.
Si la plage de dates doit avoir une date de début et une date de fin obligatoires, activer Toujours une plage.
Mettre à jour les autres propriétés générales ou propriétés spécifiques des champs Date & heure si nécessaire, puis cliquer sur Fermer dans le coin supérieur droit de l’écran.
Example
Case à cocher (boolean)¶
Le champ Case à cocher est utilisé lorsqu’une valeur ne peut être que vraie ou fausse, en cochant ou en décochant une case à cocher.
Bouton : affiche un bouton radio. Le widget fonctionne sans passer en mode édition.
Bascule : affiche un bouton à bascule. Le widget fonctionne sans passer en mode édition.
Example
Sélection (selection)¶
Le champ Sélection est utilisé lorsque les utilisateurs doivent sélectionner une seule valeur parmi un nombre de valeurs prédéfinies.
Badge : permet d’afficher la valeur à l’intérieur d’une forme arrondie, semblable à une étiquette. Il n’est pas possible de modifier la valeur dans l’UI, mais il est possible de définir une valeur par défaut.
Badges : affiche simultanément toutes les valeurs sélectionnables à l’intérieur de formes rectangulaires, organisées horizontalement.
Priorité : affiche des symboles en étoile au lieu de valeurs, qui peuvent être utilisés pour indiquer un niveau d’importance ou de satisfaction, par exemple. Cela a le même effet que la sélection du champ Priorité, bien que pour ce dernier, quatre valeurs de priorité soient déjà prédéfinies.
Radio : affiche toutes les valeurs sélectionnables en même temps sous forme de boutons radio.
Astuce
Par défaut, les boutons radio sont organisés verticalement. Activer Afficher horizontalement pour modifier leur affichage.
Barre d’état : affiche toutes les valeurs sélectionnables en même temps sous forme de barre de progression fléchée.
Astuce
Par défaut, les valeurs de la barre d’état sont sélectionnables. Désactiver Cliquable pour empêcher la modification de la valeur dans l’interface utilisateur.
Example
Priorité (selection)¶
Le champ Priorité est utilisé pour afficher un système de notation à trois étoiles, qui peut servir à indiquer un niveau d’importance ou de satisfaction. Ce type de champ est un champ Sélection avec le widget Priorité sélectionné par défaut et quatre valeurs de priorité prédéfinies. Par conséquent, les widgets Badge, Badges, Radio et Sélection ont les mêmes effets que ceux décrits sous Sélection.
Astuce
Pour modifier le nombre d’étoiles disponibles en ajoutant ou supprimant des valeurs, cliquez sur Modifier les valeurs. Notez que la première valeur est égale à 0 étoiles (c’est-à-dire, lorsqu’aucune sélection n’est faite), donc quatre valeurs donnent un système d’évaluation à trois étoiles par exemple.
Example
Fichier (binary)¶
Le champ Fichier permet de charger tout type de fichier ou de signer un formulaire (widget Signature).
Image : les utilisateurs peuvent télécharger un fichier image, qui est ensuite affiché en vue Formulaire. Cela a le même effet que l’utilisation du champ Image.
Visualiseur PDF : les utilisateurs peuvent charger un fichier PDF, qui peut ensuite être consulté à partir de la vue Formulaire.
Signature : les utilisateurs peuvent signer électroniquement le formulaire. Cela a le même effet que la sélection du champ Signature.
Example
Image (binary)¶
Le champ Image est utilisé pour télécharger une image et l’afficher en vue Formulaire. Ce type de champ est un champ Fichier avec le widget Image sélectionné par défaut. Par conséquent, les widgets Fichier, Visionneuse PDF et Signature ont les mêmes effets que ceux décrits sous Fichier.
Astuce
Pour modifier l’affichage des images chargées, sélectionnez Petite, Moyenne ou Grande dans l’option Taille.
Signature (binary)¶
Le champ Signature est utilisé pour signer électroniquement le formulaire. Ce type de champ est un champ Fichier avec le widget Signature sélectionné par défaut. Par conséquent, les widgets Fichier, Image et Visionneuse PDF ont les mêmes effets que ceux décrits sous Fichier.
Astuce
Pour permettre aux utilisateurs d’utiliser l’option Auto lors de la signature, sélectionnez l’un des champs Remplissage automatique avec disponibles (Texte, Many2One, et Champ lié sur le modèle uniquement). La signature est générée automatiquement en utilisant les données du champ sélectionné.
Champs relationnels¶
Note
Non-default widgets, when available, are presented as bullet points or sub-headings.
Many2One (many2one)¶
Le champ Many2One est utilisé pour lier un autre enregistrement (d’un autre modèle) au modèle en cours d’édition. Le nom de l’enregistrement de l’autre modèle est alors affiché sur l’enregistrement en cours d’édition.
Example
Sur le modèle Commande, le champ Client est un champ Many2One qui pointe vers le modèle Contact. Cela permet de lier plusieurs commandes à un seul contact (client).
Astuce
Pour empêcher les utilisateurs de créer un nouvel enregistrement dans le modèle lié, cochez Désactiver la création.
Pour empêcher les utilisateurs d’ouvrir des enregistrements dans une fenêtre contextuelle, cochez Désactiver l’ouverture.
Pour aider les utilisateurs à ne sélectionner que le bon enregistrement, cliquez sur Domaine pour créer un filtre.
Pour déclencher la recherche d’un enregistrement lié uniquement après la saisie d’un nombre minimum de caractères, saisir le nombre souhaité dans le champ Recherche par saisie semi-automatique. Dans les situations où le jeu de données est volumineux, cela peut améliorer à la fois la pertinence de la recherche et les performances.
Badge : affiche la valeur à l’intérieur d’une forme arrondie, semblable à une étiquette. Il n’est pas possible de modifier la valeur sur l’UI.
Radio : affiche toutes les valeurs sélectionnables en même temps sous forme de boutons radio.
One2Many (one2many)¶
Le champ One2Many est utilisé pour afficher les relations existantes entre un enregistrement du modèle actuel et plusieurs enregistrements d’un autre modèle.
Example
Vous pouvez ajouter un champ One2Many au modèle Contact pour consulter les nombreuses commandes d”un seul client.
Note
Pour utiliser un champ One2Many, les deux modèles doivent déjà avoir été liés à l’aide d’un champ Many2One. Les relations One2Many n’existent pas de manière indépendante : une recherche inversée des relations Many2One existantes est effectuée.
Lignes (one2many)¶
Le champ Lignes permet de créer un tableau avec des lignes et des colonnes (par ex. les lignes de produits d’une commande).
Astuce
Pour modifier les colonnes, cliquez sur le champ Lignes et ensuite Modifier la vue liste. Pour modifier le formulaire qui apparaît lorsqu’un utilisateur clique sur Ajouter une ligne, cliquez plutôt sur Modifier la vue formulaire.
Example
Many2Many (many2many)¶
Le champ Many2Many permet de lier plusieurs enregistrements d’un autre modèle à plusieurs enregistrements du modèle actuel. Les champs Many2Many peuvent utiliser Désactiver la création, Désactiver l’ouverture, Domaine, tout comme les champs Many2One.
Example
Sur le modèle Tâche, le champ Assignés est un champ Many2Many qui pointe vers le modèle Contact. Cela permet à un seul utilisateur d’être assigné à plusieurs tâches et à plusieurs utilisateurs d’être assignés à une seule tâche.
Astuce
Pour ne déclencher la recherche de l’enregistrement lié qu’après la saisie d’un nombre minimum de caractères, saisir le nombre souhaité dans le champ Recherche par saisie semi-automatique. Dans les situations où l’ensemble de données est volumineux, cela peut améliorer à la fois la pertinence et les performances de la recherche.
Cases à cocher : les utilisateurs peuvent sélectionner plusieurs valeurs à l’aide de cases à cocher.
Étiquettes : les utilisateurs peuvent sélectionner plusieurs valeurs apparaissant dans des formes arrondies, également appelées étiquettes. Cela a le même effet que la sélection du champ Étiquettes.
Add a field to a view¶
With Studio, it is possible to add:
a new field to a form or list view of a model
an existing field, i.e., a field that already exists on the model in question, to any view of that model
Astuce
Add a new field to a form or list view to save it to the model and make it available as an existing field in other views of the same model.
Add a new field¶
Astuce
Activate developer mode before adding a new field to see, and be able to edit, the field’s technical name during configuration.
To add a new field, follow these steps:
Navigate to the relevant form or list view, then click the (Toggle Studio) icon in the upper-right corner. Alternatively, with any app open, click the (Toggle Studio) icon, then navigate to the relevant form or list view.
In the Add tab, drag the relevant field type from the New Fields section and drop it in the desired position. If the new field is a relational field, select the relevant reciprocal field, model, or related field in the pop-up.
In the Properties tab, configure the field’s properties:
Enter the Label to be displayed as the field name on the UI; this is also used to generate the default technical name of the field.
Click anywhere outside the Label field to see the Technical Name updated with the default technical name.
Note
The Technical Name of a new field can be edited in Studio during the configuration process. At any other time, a field’s technical name can only be modified via the technical settings of the database.
The technical name of a new field added using Studio is by default prefixed by
x_studio_.
Optionally, select a different Widget via the dropdown; the default widget for the field type is selected by default.
Optionally, configure any other field properties.
Click Close in the top-right corner to close Studio.
Voir également
Add an existing field¶
To add a field that exists on the model but that is not present on the current view, follow these steps:
Navigate to the relevant view, then click the (Toggle Studio) icon in the upper-right corner. Alternatively, with any app open, click the (Toggle Studio) icon, then navigate to the relevant view.
In the Add tab, in the left panel, click Existing Fields to reveal a list of all the model’s fields that are not currently present in the view.
Drag the relevant field and drop it in the desired position.
In the Properties tab, configure the relevant properties for the field in the current view.
Note
Various properties can be configured independently for different views, if needed, such as the Label, the Widget, the visibility of the field for certain user groups, as well as whether or not the field is Invisible, Required, or Readonly.
Click Close in the top-right corner to close Studio.
Field properties¶
A series of general properties can be configured for most combinations of field type and widget. Additional properties are available depending on the specific field type and widget selected. For example, Date & Time fields using the Date & Time or Date Range widget have various specific properties that can be configured.
Propriétés générales¶
Class: Use Bootstrap or other custom classes defined in Odoo to customize how the field is styled and displayed on the UI.
Invisible : activer cette propriété lorsqu’il n’est pas nécessaire pour les utilisateurs de voir un champ dans l’interface. Cela aide à désencombrer l’interface en ne montrant que les champs essentiels selon une situation spécifique.
Obligatoire : activer cette propriété si un champ doit toujours être rempli par l’utilisateur avant de pouvoir continuer.
Lecture seule : activer cette propriété si les utilisateurs ne doivent pas pouvoir modifier un champ.
Astuce
The Invisible property also applies inside Studio. To view hidden fields in Studio, click on a view’s View tab and enable Show Invisible Elements.
The Invisible, Required, and Readonly properties can be enabled for specific records only by clicking on Conditional and creating a filter.
Example
On the form view of the Contact model, the Title field only appears when Individual is selected, as that field would not be helpful for a Company contact.
Label: This is the field name on the UI; the label is used to generate the technical name of the field.
Info-bulle d’aide : pour expliquer l’objectif d’un champ, ajouter une description. Le texte s’affiche dans une info-bulle lorsque vous survolez avec votre souris le point d’interrogation à côté du libellé du champ.
Technical Name: To view a field’s technical name in Studio (and, during the configuration of a new field, edit it if desired), activate developer mode.
Astuce
If this field needs to be updated but is no longer editable via Studio, the technical name can be modified via the technical settings of the database.
Widget : Pour changer l’apparence ou la fonctionnalité par défaut d’un champ, sélectionnez un des widgets disponibles.
Placeholder: To provide an example of how a field should be completed, add a fixed placeholder text. The text appears in light gray until a value is entered.
Dynamic Placeholder: To provide the value of the selected field as an example of how a field should be completed. The text appears in light gray until a value is entered.
Valeur par défaut : pour afficher une valeur par défaut dans un champ lors de la création d’un enregistrement, ajouter une valeur.
Autoriser la visibilité aux groupes : pour limiter les utilisateurs pouvant voir le champ, sélectionner un ou plusieurs groupes d’accès utilisateur.
Interdire la visibilité aux groupes : pour empêcher certains utilisateurs de voir le champ, sélectionner un ou plusieurs groupes d’accès utilisateur.
Propriétés pour les champs Date et heure¶
For Date & Time fields using the Date & Time or Date Range widget, some specific properties are available:
Minimal precision: Determine the smallest date unit that must be selected in the date selector. The possible values are
Day,Month,YearorDecade. If no value is selected, the user must select a day in the date selector.Maximal precision: Determine the largest date unit that can be used to navigate the date selector. The possible values are
Day,Month,YearorDecade. If no value is selected, the user can navigate the date selector by decade.Avertissement pour les dates futures : activer cette propriété pour afficher une icône d’avertissement si une date future est sélectionnée.
Format de date : par défaut, la date s’affiche sous la forme
2 avr. 2025, 08:05. Activer cette propriété pour afficher la date au format4/2/2025 08:05:00. Le mode numérique correspond au format défini pour la langue actuelle. Dans ce mode, les secondes sont toujours affichées.Afficher la date : cette propriété est activée par défaut pour les champs Date & Heure. Désactiver cette propriété pour afficher uniquement l’heure.
Afficher l’heure : cette propriété est activée par défaut pour les champs Date et heure. Sur un champ en lecture seule, désactiver la propriété pour afficher uniquement la date. Cela peut par exemple aider à garder une vue liste moins encombrée.
Afficher les secondes : cette propriété est désactivée par défaut pour les champs Date & Heure. Activer cette propriété pour afficher les secondes.
Intervalle de temps : saisir une valeur pour déterminer les intervalles de minutes affichés dans le sélecteur d’heure. Par exemple, saisir 15 pour autoriser des intervalles de quart d’heure. La valeur par défaut est fixée à 5 minutes.
Date minimale acceptée : saisir la date la plus ancienne pouvant être sélectionnée dans le sélecteur de date au format ISO, c’est-à-dire
YYYY-MM-DD. Si la date actuelle est toujours la date la plus ancienne acceptée, saisirtoday. Dans le sélecteur de date, les dates antérieures à la date minimale acceptée sont grisées.Date maximale acceptée : saisir la date la plus récente pouvant être sélectionnée dans le sélecteur de date au format ISO, c’est-à-dire
YYYY-MM-DD. Si la date actuelle est toujours la date maximale acceptée, saisirtoday. Dans le sélecteur de date, les dates postérieures à la date maximale acceptée sont grisées.
Modify a field’s properties¶
To modify the properties of a field, follow these steps:
Navigate to the relevant view, then click the (Toggle Studio) icon in the upper-right corner. Alternatively, with any app open, click the (Toggle Studio) icon, then navigate to the relevant view.
Click on the relevant field.
In the Properties tab, make any desired changes to the field properties.
Astuce
Various properties can be configured independently for different views, such as the Label, the Widget, the visibility of the field for certain user groups, as well as whether or not the field is Invisible, Required, or Readonly.
Click Close in the top-right corner to close Studio.
Note
The Technical Name of a field (visible in Studio with developer mode activated) cannot be modified in Studio; this can be done via the technical settings of the database.
Modify a field’s technical name¶
To modify the technical name of a field, activate developer mode, then follow these steps:
With the field open in Studio, copy the technical name of the field.
Remove the field from all views in Studio, then click Close to close Studio.
Navigate to .
Paste the copied technical name into the search bar, then open the relevant field.
Modify the Field Name as needed.
Once the field’s technical name has been updated, the field can then be added (back) to the relevant view(s) from the list of existing fields.
Important
When updating the technical name of a field, make sure to keep at least the x_ prefix, which is
required for any custom field; for fields created using Studio, keep the x_studio_ prefix to
allow such fields to be more easily identified.
Remove a field from a view¶
To remove a field from a view, follow these steps:
Navigate to the relevant view, then click the (Toggle Studio) icon in the upper-right corner. Alternatively, with any app open, click the (Toggle Studio) icon, then navigate to the relevant view.
Click on the relevant field.
Scroll to the bottom of the Properties tab, then click Remove from view.
Click Ok to confirm the action.
Astuce
A removed field can be easily added back to the view at a later stage, if needed.
If the intention is to declutter the view, it is also possible to modify a field and make it Invisible on the view in question.