天天看點

Django 第一個應用 項目的資料庫模型 (建立、激活模型)Django 第一個應用 項目的資料庫模型

Django 第一個應用 項目的資料庫模型

目錄

Django 第一個應用 項目的資料庫模型

建立模型

激活模型

添加到 Django 管理頁面

建立模型

1、在 Django 裡寫一個資料庫驅動的 Web 應用的第一步是定義模型 - 也就是資料庫結構設計和附加的其它中繼資料。

2、本示例完成“圖書-英雄”資訊的維護,需要存儲兩種資料:圖書、英雄

圖書表結構設計:

  • 表名: Book
  • 圖書名稱: name
  • 圖書釋出時間: pub_date

英雄表結構設計:

  • 表名: Hero
  • 英雄姓名: name
  • 英雄性别: gender
  • 英雄簡介: hcontent
  • 所屬圖書: book_id

圖書-英雄的關系為一對多

3、這些概念可以通過一個 Python 類來描述。按照下面的例子來編輯 bookApp/models.py檔案:

Django 第一個應用 項目的資料庫模型 (建立、激活模型)Django 第一個應用 項目的資料庫模型

bookApp/models.py:

from django.db import models

# Create your models here.


"""
名詞: 
    ORM(Object Ralational Mapping,對象關系映射)用來把對象模型表示的對象映射到基于S Q L 的關系模型資料庫結構中去。
    這樣,我們在具體的操作實體對象的時候,就不需要再去和複雜的 SQ L 語句打交道,隻需簡單的操作實體對象的屬性和方法。
一對多關系:外鍵寫在多的一端
book:hero = 1:n
"""


# Create your models here.
# 類對應資料庫表, 表名稱預設為bookApp_book.
class Book(models.Model):
    # 屬性對應資料庫表的列名,預設會添加id這一列。
    name = models.CharField(max_length=40, verbose_name="書籍名稱")
    pub_date = models.DateField(verbose_name="出版日期")

    # 魔術方法,字元串友好展示,便于調試代碼
    def __str__(self):
        return self.name

    class Meta:
        # 單數顯示的名稱
        verbose_name = "圖書管理"
        # 複數顯示的名稱
        verbose_name_plural = "圖書管理"


# 類對應資料庫表, 表名稱預設為bookApp_hero.
class Hero(models.Model):
    # 屬性對應資料庫表的列名,預設會添加id這一列。
    gender_choice = [
        (1, "男"),
        (2, "女")
    ]
    name = models.CharField(max_length=20, verbose_name="人物名稱")
    # 性别隻能選擇男(1)或者女(2)
    gender = models.IntegerField(choices=gender_choice, verbose_name="性别")
    content = models.TextField(max_length=1000, verbose_name="人物描述")
    # 外鍵關聯, 如果删除書籍時,相關hero對應的書籍設定為空。
    bool_id = models.ForeignKey(Book, on_delete=models.SET_NULL,
                                null=True, verbose_name="書籍id")

    # 魔術方法,字元串友好展示,便于調試代碼
    def __str__(self):
        return self.name

    class Meta:
        # 單數顯示的名稱
        verbose_name = "人物管理"
        # 複數顯示的名稱
        verbose_name_plural = verbose_name
           

激活模型

1、上面的一小段用于建立模型的代碼給了 Django 很多資訊,通過這些資訊,Django 可以:

  • 為這個應用建立資料庫 schema(生成 

    CREATE TABLE

     語句)。
  • 建立可以與 

    Question

     和 

    Choice

     對象進行互動的 Python 資料庫 API。

2、遷移是非常強大的功能,它能讓你在開發過程中持續的改變資料庫結構而不需要重新删除和建立表 - 它專注于使資料庫平滑更新而不會丢失資料。我們會在後面的教程中更加深入的學習這部分内容,現在,你隻需要記住,改變模型需要這三步:

  • 編輯 

    models.py

     檔案,改變模型。
  • 運作  python manage.py makemigrations 為模型的改變生成遷移檔案。
  • 運作 python manage.py migrate  來應用資料庫遷移。

但是首先得把

bookApp

應用安裝到我們的項目裡。

3、在 BookManage_1/settings.py  的 INSTALLED_APPS = [ ]   中加入  應用名稱 :

Django 第一個應用 項目的資料庫模型 (建立、激活模型)Django 第一個應用 項目的資料庫模型

添加到 Django 管理頁面

Django 第一個應用 項目的資料庫模型 (建立、激活模型)Django 第一個應用 項目的資料庫模型

效果:

Django 第一個應用 項目的資料庫模型 (建立、激活模型)Django 第一個應用 項目的資料庫模型