昨天提到 Django 的 model 好處是可以無痛轉移在各個 Python 資料庫裡。那我們今天深入一點先談談 model 內部怎麼運作。
class
class
都繼承 django.db.models.Model
class
的屬性都屬於資料庫的一部分範例取自官網
from django.db import models
class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
像是這樣一個 model,first_name
跟 last_name
都是 CharField
這一段我們會創建成以下的資料庫表格:
CREATE TABLE myapp_person (
"id" serial NOT NULL PRIMARY KEY,
"first_name" varchar(30) NOT NULL,
"last_name" varchar(30) NOT NULL
);
那我們更進階的討論一下 Model Field
Django 提供多種 Model Field,像是上面的 CharField
,就像是字串欄位,裡面就規定需要有一個 max_length
的參數。
除了這個還有像是 TextField
,就偏向沒有最大長度的 CharField
。
提供多種 Field,每個也都有規定的必須或是非必要參數,歡迎參考官方文檔
總之,在我的看法,Model 有點像是現在網站上宣告一個 function,然後這個 function 用 Model Field
來宣告型態!
但型態又有很多種,包含剛剛提到的字元或是文字,還有影像(ImageField
)、還有網址(URLField
)等等非常多的選項。
就是用來建立資料庫,並且在各個資料庫間無痛轉移。
這就是 Django 的好處。