天天看點

Python Django,模型類,根據模型類生成資料庫表。遷移檔案。字段類型、選項

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.字段類型(選項)

字段類型:

Python Django,模型類,根據模型類生成資料庫表。遷移檔案。字段類型、選項

選項(對字段的限制):

Python Django,模型類,根據模型類生成資料庫表。遷移檔案。字段類型、選項

當修改模型類之後,如果添加的選項不影響表的結構,則不需要重新做遷移,例如:選項中default和blank不影響表結構。