跳轉至

建立 2026-09-17 更新 2026-09-17

Models

Model 用 Python 類別描述資料庫的表格結構:每個類別對應一張表,每個類別屬性對應一個欄位。Django 的 ORM(Object-Relational Mapper) 讓你用寫 Python 的方式操作資料庫,不用手寫 SQL,同時支援 SQLite、PostgreSQL、MySQL 等多種資料庫,切換資料庫時 Model 程式碼幾乎不用改。

官方文件:ModelsModel field referenceMaking Queries

定義 Model

# models.py
from django.db import models


class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)

每個欄位都要指定 field 型別(例如 CharFieldIntegerFieldDateTimeFieldForeignKey),Django 會依型別決定資料庫欄位的實際型態,以及提供對應的驗證規則(例如 CharField 必須指定 max_length)。

建立資料庫表格(Migrations)

Model 寫好後,資料庫裡實際上還沒有對應的表格,需要透過遷移(migration)機制同步:

  1. 確認 App 已加入 settings.pyINSTALLED_APPS(見 入門設定)。
  2. 產生遷移檔,Django 會比對 Model 與資料庫現況,計算出需要哪些 SQL 異動:

    python manage.py makemigrations
    
  3. 套用遷移,實際建立或修改資料庫表格:

    python manage.py migrate
    

每次修改 Model(新增欄位、改型別等)都要重新跑一次 makemigrations + migrate,這也是 Django 版本控制資料庫結構變化的方式,遷移檔案本身會存進版本控制系統。

用 Shell 操作資料

Django 提供互動式 shell,已經先幫你載入專案設定,方便直接測試 ORM 語法:

python manage.py shell
>>> from myapp.models import Person
>>> Person.objects.create(first_name="Ada", last_name="Lovelace")
>>> Person.objects.filter(first_name="Ada")
>>> Person.objects.all()

objects 是 Django 自動加上的管理器(Manager).filter().get().all().order_by() 等是最常用的查詢方法,串接使用可以組出複雜的查詢條件。

用 Django Admin 管理資料

比起每次都開 shell 操作,更常見的作法是透過內建的後台介面管理資料,細節見 Django Admin。要登入後台,得先有管理員帳號:

python manage.py createsuperuser

並在 admin.py 中註冊 Model,後台才會顯示這張表:

# admin.py
from django.contrib import admin
from myapp.models import Person

admin.site.register(Person)

設定完成、啟動伺服器後,即可用剛才建立的帳號密碼登入 http://127.0.0.1:8000/admin 進行新增、修改、刪除資料。

下一步

有了資料模型後,接著看如何讓使用者透過表單新增或修改資料:表單與驗證;或直接用內建的 Class-Based Views 快速做出資料的 CRUD 介面。