กำหนดความสัมพันธ์และคีย์ต่างประเทศ
เชื่อมโมเดลด้วยความสัมพันธ์แบบหนึ่งต่อกลุ่ม
กำหนดความสัมพันธ์และคีย์ต่างประเทศ เป็นบทเรียน Flask Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน 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! 🎉
คำถามที่พบบ่อย
บทเรียน “กำหนดความสัมพันธ์และคีย์ต่างประเทศ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “กำหนดความสัมพันธ์และคีย์ต่างประเทศ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Flask Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Flask Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “กำหนดความสัมพันธ์และคีย์ต่างประเทศ”
เชื่อมโมเดลด้วยความสัมพันธ์แบบหนึ่งต่อกลุ่ม คุณปฏิบัติ Flask Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Flask Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Flask Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “กำหนดความสัมพันธ์และคีย์ต่างประเทศ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Flask Academy นี้ได้ไหม
ได้ บทเรียน Flask Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ดึงแถวด้วย query และ get
- กรอง เรียงลำดับ และจำกัดผลลัพธ์
- กำหนดความสัมพันธ์และคีย์ต่างประเทศ
- การรวมข้อมูลและการโหลดแบบช้ากับแบบเร็ว