リレーションシップと外部キーを定義する
1対多の関連でモデルを結び付けます
「リレーションシップと外部キーを定義する」はCoddyKit上の無料Flask Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはFlask Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Flask Academyコースには全4レッスンが含まれています。
このレッスンの一部はまだ翻訳されておらず、英語で表示されています。
Rows That Belong Together
Real data connects: a user has many posts, an order has many items. A relationship links these rows in your models. 🔗
The Foreign Key
A foreign key is a column on the child that stores the parent's id. It is the actual link saved in the database.
user_id = db.Column(db.Integer, db.ForeignKey("user.id"))Point at the Right Table
Inside ForeignKey you name the target as table.column, using the lowercase table name Flask-SQLAlchemy generates.
db.ForeignKey("user.id")Add a relationship
The relationship() helper turns that key into easy navigation, so you reach linked objects as attributes.
posts = db.relationship("Post")One-to-Many in Practice
Put the foreign key on the many side and the relationship on the one side. One user, many posts.
class Post(db.Model):
user_id = db.Column(db.ForeignKey("user.id"))Navigate Parent to Children
Once linked, read a parent's children like a list. SQLAlchemy fetches them for you on access. ✨
user = User.query.first()
for p in user.posts:
print(p.title)Walk Back with backref
Add backref to a relationship and the child instantly gains a way to reach its parent.
posts = db.relationship("Post", backref="author")Use the Backref
That backref lets you go from a child straight back to its owner with a clean attribute. 🙌
post = Post.query.first()
print(post.author.name)Assign by Object
Link rows by setting the relationship attribute to an object. SQLAlchemy fills in the foreign key for you.
post = Post(title="Hi")
post.author = userCascade on Delete
Set a cascade so deleting a parent can also remove its children, keeping the database tidy and consistent.
db.relationship("Post", cascade="all, delete")Key vs Relationship
The foreign key stores the link in SQL; relationship is the Python convenience layer on top of it. You usually want both.
Quick Check
One user can write many posts. Where does the foreign key column live?
Recap: Linking Models
You now connect tables with a foreign key, navigate them via relationship and backref, and control deletes with cascade. Models, united! 🎉
よくある質問
「リレーションシップと外部キーを定義する」レッスンは無料ですか?
はい。「リレーションシップと外部キーを定義する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Flask Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Flask Academyコースには全4レッスンが含まれています。
「リレーションシップと外部キーを定義する」で何を学びますか?
1対多の関連でモデルを結び付けます ブラウザで直接実行するハンズオンコードでFlask Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Flask Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのFlask Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「リレーションシップと外部キーを定義する」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このFlask Academyレッスンでコードを書いて実行できますか?
はい。すべてのFlask Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- queryとgetで行を取得する
- 結果をフィルター、並べ替え、制限する
- リレーションシップと外部キーを定義する
- JOINと遅延読み込み・即時読み込み