โมเดลและการย้ายฐานข้อมูล
กำหนดและย้ายฐานข้อมูล
โมเดลและการย้ายฐานข้อมูล เป็นบทเรียน Python Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Python Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน
โมเดล Django
โมเดล Django คือคลาส Python ที่กำหนดโครงสร้างของตารางฐานข้อมูล แอตทริบิวต์แต่ละรายการคือฟิลด์ โมเดลจะอยู่ใน models.py ของแอป
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
print('Post model defined')ชนิดของฟิลด์
Django มีชนิดฟิลด์หลายแบบที่แมปกับชนิดของคอลัมน์
CharFieldสำหรับข้อความสั้น (ต้องกำหนดmax_length)TextFieldสำหรับข้อความยาวIntegerField,BooleanField,DateTimeField
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
body = models.TextField()
views = models.IntegerField(default=0)
print('Fields map to columns')คีย์หลักโดยนัย
Django จะเพิ่มคีย์หลัก id ที่เพิ่มค่าอัตโนมัติให้ทุกโมเดล คุณจึงแทบไม่ต้องประกาศคีย์หลักด้วยตนเอง
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
# 'id' is added automatically
print('id field is automatic')ตัวเลือกของฟิลด์
ฟิลด์รับตัวเลือกต่าง ๆ เช่น default, null, blank และ unique เพื่อควบคุมการทำงานและการตรวจสอบข้อมูล
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200, unique=True)
published = models.BooleanField(default=False)
subtitle = models.CharField(max_length=200, blank=True)
print('Options refine each field')วันที่
DateTimeField(auto_now_add=True) จะบันทึกเวลาที่แถวถูกสร้างขึ้นครั้งแรก ส่วน auto_now=True จะอัปเดตค่าเมื่อมีการบันทึกทุกครั้ง
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
print('Timestamps set automatically')ความสัมพันธ์
เชื่อมโยงโมเดลด้วย ForeignKey สำหรับความสัมพันธ์แบบหนึ่งต่อหลาย ส่วน on_delete จะบอก Django ว่าต้องทำอย่างไรเมื่อแถวที่ถูกอ้างอิงถูกลบ
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
class Post(models.Model):
author = models.ForeignKey(Author, on_delete=models.CASCADE)
print('ForeignKey links Post to Author')ไมเกรชันคืออะไร
ไมเกรชัน คือวิธีที่ Django ใช้เปลี่ยนแปลงโมเดลให้กลายเป็นการเปลี่ยนแปลง schema ของฐานข้อมูล ไมเกรชันทำหน้าที่เหมือนระบบควบคุมเวอร์ชันสำหรับฐานข้อมูล
# Migrations record schema changes over time
# so the database matches your models
print('Migrations track schema changes')การสร้างไมเกรชัน
python manage.py makemigrations จะตรวจสอบโมเดลของคุณและสร้างไฟล์ไมเกรชันที่อธิบายการเปลี่ยนแปลง
# python manage.py makemigrations
# -> blog/migrations/0001_initial.py
print('makemigrations writes migration files')การนำไมเกรชันไปใช้
python manage.py migrate จะนำไมเกรชันที่รอดำเนินการไปใช้กับฐานข้อมูล โดยสร้างหรือปรับเปลี่ยนตาราง
# python manage.py migrate
# -> Applying blog.0001_initial... OK
print('migrate applies changes to the DB')ขั้นตอนการทำไมเกรชัน
ลำดับการทำงานคือ แก้ไข models.py เรียกใช้ makemigrations แล้วจึงเรียกใช้ migrate ทำซ้ำทุกครั้งที่โมเดลของคุณเปลี่ยนแปลง
# 1. Change models.py
# 2. python manage.py makemigrations
# 3. python manage.py migrate
print('Edit, make, migrate')การสอบถามโมเดล
แต่ละโมเดลจะมีตัวจัดการชื่อ objects สำหรับการสอบถามข้อมูล เช่น Post.objects.all(), .filter(), .get() และ .create()
# Post.objects.all()
# Post.objects.filter(published=True)
# Post.objects.get(id=1)
# Post.objects.create(title='Hello')
print('objects is the query manager')ตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความรู้เกี่ยวกับไมเกรชันของคุณ
สรุปทบทวน
คุณได้กำหนดโมเดลและนำไมเกรชันไปใช้แล้ว
- โมเดลคือคลาสใน
models.pyที่มีฟิลด์ระบุชนิด - Django จะเพิ่มคีย์หลัก
idโดยอัตโนมัติ ForeignKeyใช้เชื่อมโยงโมเดล ส่วนon_deleteกำหนดพฤติกรรมการลบแบบทอดต่อmakemigrationsแล้วตามด้วยmigrateจะทำให้ฐานข้อมูลตรงกับโมเดลModel.objectsใช้สอบถามข้อมูล
คำถามที่พบบ่อย
บทเรียน “โมเดลและการย้ายฐานข้อมูล” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “โมเดลและการย้ายฐานข้อมูล” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Python Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “โมเดลและการย้ายฐานข้อมูล”
กำหนดและย้ายฐานข้อมูล คุณปฏิบัติ Python Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Python Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Python Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “โมเดลและการย้ายฐานข้อมูล” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Python Academy นี้ได้ไหม
ได้ บทเรียน Python Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- โครงการและแอป
- โมเดลและการย้ายฐานข้อมูล
- วิวและ URL
- ผู้ดูแลระบบ Django