Définir les relations et les clés étrangères
Reliez les modèles avec des associations un-à-plusieurs.
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 = userPropagation 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 ! 🎉
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
- Récupérer des lignes avec query et get
- Filtrer, trier et limiter les résultats
- Définir les relations et les clés étrangères
- Jointures et chargement différé ou immédiat