0Pricing
Flask Academy · レッスン

リレーションシップと外部キーを定義する

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 = user

Cascade 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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. queryとgetで行を取得する
  2. 結果をフィルター、並べ替え、制限する
  3. リレーションシップと外部キーを定義する
  4. JOINと遅延読み込み・即時読み込み
← Flask Academyに戻る