ITSkillsCenter
Développement Web

Modélisation collections et relations Directus : tutoriel pratique 2026

4 min de lecture

📍 Article principal du cluster : Directus 2026 : guide complet.

Avant d’écrire du code frontend, modéliser proprement vos collections Directus économise des semaines de refactor. Ce tutoriel détaille la modélisation d’une boutique e-commerce ouest-africaine type, avec relations, validations, et best practices.

Prérequis

  • Directus en production (voir tutoriel installation).
  • Compréhension des bases SQL.
  • Niveau attendu : intermédiaire.
  • Temps estimé : 1-2 heures.

Étape 1 — Plan du modèle

Pour une marketplace artisanat ouest-africain :

  • Products : produits avec prix, stock, description.
  • Categories : catégories hiérarchiques.
  • Variants : tailles, couleurs (One-to-Many).
  • Brands : marques (Many-to-One).
  • Vendors : vendeurs marketplace.
  • Tags : tags transversaux (Many-to-Many).
  • Reviews : avis clients.

Étape 2 — Collection Products

Settings → Data Model → Create Collection : products.

Fields :

  • id (UUID auto, primary).
  • status (Select : draft, published, archived).
  • sort (Integer, pour ordering manuel).
  • name (Input, required, unique).
  • slug (Input, required, unique, regex slug).
  • description (WYSIWYG).
  • price (Decimal, required).
  • currency (Select : XOF, MAD, TND, EUR, USD, default XOF).
  • stock (Integer, default 0).
  • images (Files, Multiple).
  • category (Many-to-One → categories).
  • brand (Many-to-One → brands).
  • vendor (Many-to-One → vendors).
  • tags (Many-to-Many → tags via products_tags).
  • variants (One-to-Many → variants).

Étape 3 — Collection Categories (hiérarchique)

Pour catégories type Mode → Femme → Robes → Pagnes :

  • name (Input).
  • slug (Input, unique).
  • parent (Many-to-One → categories, self-reference).
  • children (One-to-Many → categories, alias).
  • icon (File).
  • sort (Integer).

Étape 4 — Collection Variants

Pour produits avec tailles/couleurs :

  • product (Many-to-One → products).
  • size (Select : XS, S, M, L, XL, XXL).
  • color (Input).
  • price_adjustment (Decimal, default 0).
  • stock (Integer).
  • sku (Input, unique).

Étape 5 — Many-to-Many : products_tags

Directus crée automatiquement la junction table. Sur products → field tags → Many to Many → choisir collection tags. Directus génère products_tags avec FK products_id et tags_id.

Étape 6 — Champs multilingues (translations)

Pour Maroc/Tunisie/Algérie servant FR + AR :

  1. Field type : Translations.
  2. Languages : FR, AR, EN.
  3. Fields traduits : name, description, slug.

Directus crée auto une collection products_translations avec FK product_id et locale.

Étape 7 — Validations métier

Field price : Validation type → Number → min: 0. Custom : ne pas accepter price = 0 si status = published.

Slug : Regex ^[a-z0-9-]+$. Unique.

Stock : > 0 si status = published.

Étape 8 — Computed fields

Champ « display_price » qui formate prix avec currency :

// Field type: Custom (formula)
{{ price | format_currency(currency) }}

Étape 9 — Permissions par champ

Role Editor : peut update name, description, price, images. Pas update status (Reviewer only). Pas delete.

Étape 10 — Test API

curl https://cms.votre-entreprise.com/items/products?fields=*,category.name,brand.name,images.*&filter[status][_eq]=published
# Retourne produits publiés avec catégorie + marque + images peuplées

Erreurs fréquentes

Erreur Cause Solution
M2M ne fonctionne pas Junction table mal créée Recréer field via Studio
Translations vides Default language pas sauvegardé Toujours fournir version par défaut
Slug doublons Pas unique constraint Activer unique au niveau field
Image upload échoue Storage S3 mal configuré Voir tutoriel installation
Performance N+1 Pas de fields populate ?fields=*,relation.*
Sort manuel ne marche pas Field sort non créé Ajouter Integer sort

Adaptation au contexte ouest-africain

Trois précisions. Multi-currency : produits en XOF (Sénégal/CI), MAD (Maroc), TND (Tunisie). Champ currency par produit + display formatting frontend. Vendeurs marketplace : vendor as collection séparée + Many-to-One product → vendor permet marketplace multi-vendeur. Tags transverses : « bio », « artisanal », « fait main » comme tags M2M, filtres puissants côté API.

Tutoriels frères

FAQ

Migrations schema en prod ? Studio génère migrations Knex.js. Apply via npx directus database migrate:latest.

Modifier collection sans Studio ? Direct SQL puis Studio refresh. Mais préférable via Studio pour cohérence.

Performance avec 1M items ? Indexes sur foreign keys + status + slug. Pagination 25 items/page.

Schema export ? npx directus schema snapshot → JSON portable.

Versioning content ? Directus 11+ a Content Versioning (revisions).

Pour aller plus loin

Besoin d'un site web ?

Confiez-nous la Création de Votre Site Web

Site vitrine, e-commerce ou application web — nous transformons votre vision en réalité digitale. Accompagnement personnalisé de A à Z.

À partir de 250.000 FCFA
Parlons de Votre Projet
Publicité