1. Demandez la structure à Odoo
Si le serveur occupe votre terminal, ouvrez un second terminal à la racine du workspace. La commande scaffold crée des fichiers ; elle ne modifie pas la base et n'a pas besoin que le serveur tourne.
.venv/bin/python src/odoo/odoo-bin scaffold training_hello custom_addons.\.venv\Scripts\python.exe .\src\odoo\odoo-bin scaffold training_hello .\custom_addonstraining_hello est le nom technique : minuscules, caractères ASCII et underscore. custom_addons est le dossier qui accueillera le module.
Option B — environnement Docker
Avec la section 1B, le fichier compose.yaml monte votre dossier local dans le conteneur. Lancez le scaffold dans le service Odoo : l'exécutable est alors celui de l'image, pas une commande installée sur votre machine.
docker compose exec odoo odoo scaffold training_hello /mnt/extra-addonsÀ observer : custom_addons/training_hello/ apparaît sur votre machine via le volume. Si votre montage utilise un autre chemin, remplacez seulement /mnt/extra-addons par le chemin réellement déclaré dans Compose.
2. Lisez avant de supprimer
Dans custom_addons/training_hello/, le scaffold propose plusieurs familles de besoins :
models/pour les objets métier Python ;controllers/pour les routes HTTP ;views/pour des interfaces et templates XML ;security/pour les droits ;demo/pour des données facultatives d'apprentissage ;__manifest__.pyet__init__.pypour présenter et charger le paquet.
Notre résultat ne définit ni modèle, ni route, ni écran. Dans l'explorateur de l'éditeur, supprimez controllers/, demo/, models/, security/ et views/. Gardez uniquement les deux fichiers racine. Cette opération est identique avec ou sans Docker : le dossier est monté sur votre machine.
3. Rendez le paquet explicitement vide
# Ce premier module ne charge encore aucun sous-paquet Python.À observer : custom_addons/training_hello/ contient maintenant __init__.py et __manifest__.py. Rien n'apparaît encore dans Odoo : créer un dossier n'installe pas un module dans une base.