0Pricing
Python Academy · บทเรียน

โมเดลและการย้ายฐานข้อมูล

กำหนดและย้ายฐานข้อมูล

โมเดลและการย้ายฐานข้อมูล เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. โครงการและแอป
  2. โมเดลและการย้ายฐานข้อมูล
  3. วิวและ URL
  4. ผู้ดูแลระบบ Django
← กลับไปที่ Python Academy