1. Ajoutez deux catégories de départ
Créez ce fichier XML. Ces catégories sont des exemples de formation ; elles ne remplacent pas les catégories que vous créerez ensuite dans l'interface.
<?xml version="1.0" encoding="UTF-8"?>
<odoo noupdate="1">
<record id="training_note_category_meeting" model="training.note.category">
<field name="name">Réunion</field>
</record>
<record id="training_note_category_idea" model="training.note.category">
<field name="name">Idée</field>
</record>
</odoo>2. Déclarez le fichier dans le manifeste
Ajoutez le fichier de catégories après celui des notes. Ne déclarez que des fichiers qui existent déjà.
data"data": [
# ...
"data/training_note_data.xml",
"data/training_note_category_data.xml", # ← ajoutez cette ligne
# ...
],Pour copier uniquement la ligne à ajouter :
"data/training_note_category_data.xml",data complète à ce stade"data": [
"views/hello_world_menus.xml",
"data/partner_category_data.xml",
"views/partner_category_list.xml",
"data/training_note_data.xml",
"data/training_note_category_data.xml",
],3. Lisez les deux tables, sans les modifier
Mettez le module à niveau. Dans pgAdmin, ouvrez Query Tool ; avec psql, exécutez les mêmes requêtes. Elles lisent les données, elles ne changent rien :
SELECT id, name
FROM training_note_category
ORDER BY id;
SELECT id, title, category_id
FROM training_note
ORDER BY id;Résultat attendu : la première requête affiche Réunion et Idée. La seconde montre les notes déjà créées au jour 1 ; leur category_id est encore vide. C'est normal : nous les choisirons dans le formulaire de la section 3.
4. Lisez la clé étrangère
category_id est une clé étrangère : sa valeur référence l'id d'une ligne de training_note_category. Odoo a créé ce lien à partir de fields.Many2one.
SELECT conname, pg_get_constraintdef(oid)
FROM pg_constraint
WHERE conrelid = 'training_note'::regclass
AND contype = 'f';À observer : le résultat mentionne category_id et la table training_note_category. Ne créez ni ne modifiez cette contrainte avec SQL : si le modèle doit changer, modifiez le Python puis mettez le module à niveau.
5. Affecter une catégorie : la prochaine étape
À la fin de cette section, les catégories existent et la relation est prête, mais les notes de départ n'ont volontairement pas encore de catégorie. Nous n'allons pas remplir category_id avec une requête SQL : l'exercice doit montrer le vrai parcours d'Odoo.
- Dans la section 3, créez d'abord les droits et les views.
- Ouvrez Notes de formation → Notes.
- Ouvrez une note de départ, par exemple Bienvenue.
- Dans le field Catégorie, choisissez Réunion ou Idée, puis enregistrez.
- Rouvrez la note et lancez la requête de vérification :
category_idréférence désormais la catégorie choisie.
Ces gestes sont réalisés pas à pas dans l'étape 3 de la section 3. C'est cette écriture via le formulaire et le model Odoo — pas une modification SQL manuelle — qui complète la démonstration de la persistance.