Flask Academy · Leçon

Définir les relations et les clés étrangères

Reliez les modèles avec des associations un-à-plusieurs.

Leçon 3 sur 413 étapes

Définir les relations et les clés étrangères est une leçon Flask Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Flask Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Flask Academy comprend 4 leçons au total.

Des lignes qui vont ensemble

Les données réelles sont liées : un utilisateur possède plusieurs publications, une commande contient plusieurs articles. Une relationship relie ces lignes dans vos modèles. 🔗

La clé étrangère

Une clé étrangère est une colonne de l’élément enfant qui stocke l’identifiant du parent. C’est le lien réel enregistré dans la base de données.

user_id = db.Column(db.Integer, db.ForeignKey("user.id"))

Pointer vers la bonne table

Dans ForeignKey, indiquez la cible sous la forme table.column, en utilisant le nom de table en minuscules généré par Flask-SQLAlchemy.

db.ForeignKey("user.id")

Ajouter une relation

L’utilitaire relationship() transforme cette clé en un accès pratique, afin que vous puissiez atteindre les objets liés comme des attributs.

posts = db.relationship("Post")

Un-à-plusieurs en pratique

Placez la clé étrangère du côté « plusieurs » et la relation du côté « un ». Un utilisateur, plusieurs publications.

class Post(db.Model):
    user_id = db.Column(db.ForeignKey("user.id"))

Naviguer du parent vers les enfants

Une fois les éléments liés, vous pouvez lire les enfants d’un parent comme une liste. SQLAlchemy les récupère pour vous lorsque vous accédez à cet attribut. ✨

user = User.query.first()
for p in user.posts:
    print(p.title)

Revenir en arrière avec backref

Ajoutez backref à une relation pour que l’enfant puisse immédiatement retrouver son parent.

posts = db.relationship("Post", backref="author")

Utiliser backref

Ce backref vous permet de revenir directement d’un enfant à son propriétaire grâce à un attribut clair. 🙌

post = Post.query.first()
print(post.author.name)

Affecter par objet

Reliez les lignes en affectant un objet à l’attribut de relationship. SQLAlchemy renseigne la clé étrangère pour vous.

post = Post(title="Hi")
post.author = user

Propagation lors de la suppression

Définissez une propagation afin que la suppression d’un parent puisse également supprimer ses enfants, tout en gardant la base de données propre et cohérente.

db.relationship("Post", cascade="all, delete")

Clé ou relation

La clé étrangère stocke le lien en SQL ; relationship est la couche pratique de Python qui repose dessus. En général, vous avez besoin des deux.

Vérification rapide

Un utilisateur peut écrire plusieurs publications. Où se trouve la colonne de clé étrangère ?

Récapitulatif : relier les modèles

Vous savez maintenant relier les tables avec une clé étrangère, les parcourir avec relationship et backref, et contrôler les suppressions avec cascade. Les modèles sont réunis ! 🎉

Gratuit pour commencer

Apprends Python avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
30
Leçons
120

Questions Fréquemment Posées

La leçon « Définir les relations et les clés étrangères » est-elle gratuite ?

Oui — le texte complet de « Définir les relations et les clés étrangères » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Flask Academy, passe à CoddyKit PRO. Le cours Flask Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Définir les relations et les clés étrangères » ?

Reliez les modèles avec des associations un-à-plusieurs. Tu pratiques Flask Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Flask Academy ?

Aucune expérience préalable n'est requise. Flask Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Définir les relations et les clés étrangères » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Flask Academy ?

Oui. Chaque leçon Flask Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Récupérer des lignes avec query et get
  2. Filtrer, trier et limiter les résultats
  3. Définir les relations et les clés étrangères
  4. Jointures et chargement différé ou immédiat
← Retour à Flask Academy