Django模型簡介
模型是一個定義資料來源的資料,它包含要儲存資料的一些屬性和行為。通常,每一個模型對應資料庫中的一個數據表。
模型案例
下面的程式碼定義了Person模型,有first_name和last_name:
from django.db import models class Person(models.Model): first_name = models.CharField(max_length=30) last_name = models.CharField(max_length=30)
first_name和last_name代表模型的field(屬性),每一個屬性對應到資料表的一個列,上面的模型程式碼對應的資料表將是如下:
CREATE TABLE myapp_person ( "id" serial NOT NULL PRIMARY KEY, "first_name" varchar(30) NOT NULL, "last_name" varchar(30) NOT NULL );
- 表名稱字首 myapp 是在配置檔案中配置的,可以覆蓋
- id元素是自動新增的,也可以做一些自定義的操作
- 這裡的語句使用的是PostgreSQL語法,在settings.py中配置其它型別的資料庫,可以生成對應資料庫的語法
使用模型
當你定義好模型之後,你需要告訴Django你要用這些模型了,通過修改settings.py檔案中INSTALLED_APPS部分來新增新的模組名稱,包含剛定義的model。
# Application definition INSTALLED_APPS = [ 'myqpp', ... ]
新增新的模組之後,不要忘了執行遷移命令是模型生效。
python manage.py migrage
模型屬性(Field)
Field是模型中最重要的部分,也是必須要有的部分。它定義了 Python 模型與資料表之間的對應關係。
注意定義屬性名稱時不要使用有衝突含義的欄位名稱。如save
,clean
,delete
Field Type
模型的每一個屬性都應該是Field
類的例項,Django使用Field
類處理如下事情:
- 資料表 column 列的型別,Interger,VARCHAR, TEXT
- 欄位驗證validate
Django預定義了很多Field,這裡有一份完整的Field型別參考
ofollow,noindex">Model field reference