Django是一個MVT架構:
M:model模型。 設計與資料庫互動的模型類。
V:view視圖。 類似控制層,處理請求、響應,與模型和模闆互動。
T:template模闆。 html模闆。
根據模型類自動生成資料庫表
1、應用中的models.py中定義模型類。
2、根據模型類生成遷移檔案
指令:python manage.py makemigrations
3、執行遷移生成表
指令:python manage.py migrate
根據遷移檔案生成表,表名的預設格式: 應用名_模型類名小寫
會生成一個db.sqlite3資料庫檔案(Django預設采用sqlite3資料庫,可以在項目的settings.py中配置資料庫)
(sudo apt-get install sqliteman # 安裝sqliteman)
(sqliteman # 啟動sqliteman)
應用名/models.py(定義模型類,繼承models.Model類):
from django.db import models
# 設計模型類(和資料庫表對應的實體類)
# 圖書類 (orm會根據模型類自動建立資料庫表。 表名: 應用名_模型類名小寫)
class BookInfo(models.Model):
'''圖書模型類'''
# 自動生成id字段
btitle = models.CharField(max_length=20) # 字元串類型。 btitle對應資料庫中表的字段
bpub_date = models.DateField() # 日期類型。
# 可以決定背景管理頁面中,該模型的顯示内容。
# def __str__(self):
# # 傳回書名
# return self.btitle
# 英雄類
# 關系屬性hbook(一個圖書對應多個英雄人物)
class HeroInfo(models.Model):
'''英雄人物模型類'''
hname = models.CharField(max_length=20)
hgender = models.BooleanField(default=False) # bool類型,default指定預設值
hcomment = models.CharField(max_length=128)
# 關系屬性 hbook,建立圖書類和英雄人物類之間的一對多關系
hbook = models.ForeignKey('BookInfo') # 對應資料庫表中的字段hbook_id。如果BookInfo模型類不在該應用中,可以寫"應用名.BookInfo"表示關聯的模型類在其他應用中。
# def __str__(self):
# return self.hname
字段類型和選項:
模型類中定義屬性的文法格式: 屬性名 = models.字段類型(選項)
字段類型:
選項(對字段的限制):
當修改模型類之後,如果添加的選項不影響表的結構,則不需要重新做遷移,例如:選項中default和blank不影響表結構。