天天看點

Django模型簡介

模型是一個定義資料源的資料,它包含要存儲資料的一些屬性和行為。通常,每一個模型對應資料庫中的一個資料表。

  • 每一個模型是django.db.models.Model的子類
  • 每一個模型屬性代表資料表的一個字段。
  • Django提供了自動生成的資料庫通路API,使用模型操作資料庫很友善

模型案例

下面的代碼定義了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類型參考

Model field reference