1. Créez le dossier et le fichier
Dans l'explorateur de votre éditeur, ajoutez le dossier data sous custom_addons/training_hello, puis créez-y partner_category_data.xml.
2. Ajoutez deux étiquettes
<?xml version="1.0" encoding="UTF-8"?>
<odoo noupdate="1">
<record id="partner_category_student"
model="res.partner.category">
<field name="name">Formation · Étudiant</field>
<field name="color">4</field>
</record>
<record id="partner_category_teacher"
model="res.partner.category">
<field name="name">Formation · Formateur</field>
<field name="color">2</field>
</record>
</odoo>Ce XML crée deux étiquettes de contact, pas deux fiches dans la liste Contacts. Elles n'ajoutent donc ni nom, ni e-mail, ni ligne à cette liste. Après les étapes 3 et 4 — déclaration dans le manifeste, puis mise à niveau du module — ouvrez Contacts → Configuration → Étiquettes de contact pour les voir. Vous pourrez ensuite les attribuer à une fiche contact dans son champ Étiquettes.
3. Lisez un enregistrement
Les lignes suivantes donnent un sens concret au XML, qui peut paraître abstrait au premier regard.
model="res.partner.category"sélectionne le modèle ORM, c'est-à-dire la famille d'enregistrements des étiquettes de contacts. C'est plus proche d'une table ou d'un objet de domaine que d'un libellé choisi librement ; un modèle ORM ne correspond pas forcément à une seule table SQL.idest l'identifiant externe stable utilisé par le module.- Chaque balise
fielddonne une valeur à un champ du modèle. noupdate="1"signifie, en simplifiant : « créez une première fois, puis n'écrasez pas lors des mises à niveau normales ». Ce n'est pas l'équivalent littéral d'unINSERT OR IGNORESQL : Odoo s'appuie sur l'identifiant externe. La première création a bien lieu ; un nouvel enregistrement avec un nouvelidsera aussi créé, mais une modification ultérieure des valeurs XML ne remplacera pas un enregistrement existant marquénoupdate.