Chapitre 6 : Création d’un module sur Odoo (part 8)

Les vues : Field

Dans Odoo, l’élément <field> est utilisé pour représenter un champ dans une vue XML. Il est utilisé dans les formulaires (<form>), les vues de liste/tabulaires (<tree>), les vues de recherche (<search>), etc.

L’élément <field> permet de définir comment afficher et interagir avec les données associées à un champ spécifique d’un modèle. Il existe plusieurs attributs et options disponibles pour personnaliser le comportement et l’apparence du champ.

Voici quelques attributs couramment utilisés avec l’élément <field> :

  • name : L’attribut name spécifie le nom du champ à afficher. Il doit correspondre au nom du champ défini dans le modèle Python correspondant.
  • string : L’attribut string permet de spécifier l’étiquette ou le libellé du champ à afficher à l’utilisateur.
  • readonly : L’attribut readonly permet de rendre le champ en lecture seule, empêchant ainsi toute modification.
  • required : L’attribut required permet de rendre le champ obligatoire, ce qui signifie que l’utilisateur doit fournir une valeur pour ce champ lors de la saisie de données.
  • widget : L’attribut widget permet de spécifier le type d’interface utilisateur à utiliser pour afficher le champ. Par exemple, widget="selection" pour une liste déroulante, widget="boolean_toggle" pour un interrupteur, etc.
  • domain : L’attribut domain permet de filtrer les enregistrements disponibles pour une relation Many2one ou Many2many en utilisant une expression de domaine.
  • options : L’attribut options permet de définir des options supplémentaires spécifiques au champ, comme le format de date ou d’heure, les décimales pour les champs numériques, etc.

Voici un exemple de code XML montrant l’utilisation de l’élément <field> dans une vue de formulaire :

<form>
    <sheet>
        <group>
            <field name="name" string="Name" required="1"/>
            <field name="age" string="Age" readonly="1"/>
            <field name="gender" string="Gender" widget="selection" options="{'no_open': True}"/>
        </group>
    </sheet>
</form>

Dans cet exemple, nous avons trois champs (name, age et gender) affichés dans un groupe à l’intérieur d’une feuille (<sheet>) d’une vue de formulaire (<form>). Les attributs name, string, required, readonly, widget et options sont utilisés pour personnaliser chaque champ selon les besoins.

L’utilisation de l’élément <field> permet de définir et de configurer les champs dans les vues Odoo, offrant ainsi une grande flexibilité pour afficher, interagir et manipuler les données dans les différentes parties de l’application.

Activité : Ajouter un champ dans une vue de liste et un formulaire

Objectif : Dans la vue de liste (<tree>) et le formulaire (<form>) d’un modèle existant, ajoutez un champ supplémentaire pour afficher des informations supplémentaires sur chaque enregistrement.

Instructions :

  1. Ouvrez le modèle Python correspondant au modèle dont vous souhaitez modifier les vues (<tree> et <form>). Par exemple, hospital.patient.
  2. Identifiez les champs existants que vous souhaitez afficher dans les vues (<tree> et <form>). Dans cet exercice, les champs sont name, age et gender.
  3. Ajoutez le champ supplémentaire dans la vue <tree> en utilisant l’élément <field>. Spécifiez l’attribut name avec le nom du champ et ajoutez d’autres attributs et options selon vos besoins. Par exemple :
<tree>
    <field name="name"/>
    <field name="age"/>
    <field name="gender"/>
</tree>
  1. Ajoutez également le champ supplémentaire dans la vue <form> en utilisant l’élément <field>. Spécifiez également l’attribut name avec le nom du champ et ajoutez d’autres attributs et options selon vos besoins. Par exemple :
<form>
    <sheet>
        <group>
            <field name="name"/>
            <field name="age"/>
            <field name="gender"/>
        </group>
    </sheet>
</form>
  1. Enregistrez les modifications dans votre module.
  2. Mettez à jour le module Odoo pour prendre en compte les modifications apportées aux vues en exécutant la commande appropriée (par exemple, odoo-bin -u nom_du_module).
  3. Accédez à la vue de liste (<tree>) et au formulaire (<form>) correspondant au modèle modifié. Vous devriez maintenant voir le champ supplémentaire ajouté affiché dans les deux vues, aux côtés des champs existants (name, age et gender).

Cet exercice vous permet de pratiquer l’ajout de champs supplémentaires dans les vues <tree> et <form> d’un modèle Odoo existant. Cela vous permet de personnaliser l’affichage des données et d’ajouter des informations supplémentaires pour répondre aux besoins spécifiques de votre application.

Activité : Ajouter deux patients

Objectif : Ajouter deux nouveaux patients à la base de données en utilisant le modèle hospital.patient.

Instructions :

  1. Accédez à l’interface Odoo en ouvrant votre navigateur et en vous connectant à votre instance Odoo.
  2. Dans le menu principal, accédez à la section « Hospital » pour afficher les sous-menus.
  3. Cliquez sur « Patients » pour accéder à la liste des patients.
  4. Dans la vue de liste des patients, recherchez le bouton « Create » ou « Ajouter » et cliquez dessus pour ouvrir le formulaire de création d’un nouveau patient.
  5. Dans le formulaire, remplissez les champs requis, tels que « Name », « Age » et « Gender », avec les informations appropriées pour le premier patient. Par exemple, « Mahmed Ahmed », 35 ans, de sexe masculin.
  6. Une fois les informations remplies, cliquez sur le bouton « Save » ou « Enregistrer » pour créer le premier patient.
  7. Répétez les étapes 4 à 6 pour créer un deuxième patient avec des informations différentes. Par exemple, « Salma Rachid », 28 ans, de sexe féminin.
  8. Une fois les deux patients créés, vous pouvez vérifier leur présence dans la liste des patients en retournant à la vue de liste.

Cet exercice vous permet de pratiquer l’ajout de nouveaux enregistrements (patients) à l’aide de l’interface Odoo. En créant deux patients, vous pouvez vous familiariser avec le processus de création d’enregistrements et vérifier leur présence dans la vue de liste des patients.