在Django中建立資料表

在Django的網站框架中想要建立一個可以儲存資料的資料表,雖然這個資料表是放在資料庫中,但是建立資料表的方式卻不是直接在資料庫中手動建立它,而是要在Django的models.py檔案中先建立一個類別,然後才使用指令讓系統依據這個類別所定義的欄位內容建立資料庫中的資料表,這是初學者一開始要留意的地方。

首先,請開啟models.py,建立一個類別。其中,類別名稱就是將來建立資料表的名稱依據,而類別中的成員則是資料表中的每一個欄位。特別要留意的是,類別的名稱習慣上都是使用大寫字母開頭,這樣才不會之後在寫程式時,變數和類別名稱產生混淆。以下是一個資料表的定義範例(以下是models.py):

from django.db import models

class News(models.Model):
    title = models.CharField(max_length=50)
    content = models.TextField()
    source = models.CharField(max_length=50)
    pdate = models.DateTimeField(auto_now_add=True)
    def ___str__(self):
        return self.title

在上面這個例子中,我們定義了News這張資料表,它包含了4個欄位,分別是title、content、source、以及pdate。其中title是用來記錄新聞標題用的,它的欄位型態是字元,設定最多能夠放置50個字,接著content我們打算用來儲存新聞的內容,因此使用可以記錄較多文字資料的TextField欄位型態,至於source是新聞來源,和標題一樣也是使用字元型態,最多可以記錄50個字元,最後,pdate則是我們張貼此新聞的時間,我們使用的是DateTime日期時間欄位型態,並設定它的預設值是自動在記錄被儲存時的時間點。

在建立好上述的資料表時,接著要使用以下這兩個指令才能夠使這個資料表的定義生效,並更新到資料庫中:

python manage.py makemigrations
python manage.py migrate

如果你是第一次使用資料庫,那麼還需要加上以下這個指令建立一個網站後台的管理員:

python manage.py createsuperuser

完成的資料表如果想要在網站的後台可以進行管理的話,那麼要在admin.py這個檔案中把資料表註冊到後台管理功能中(以下是admin.py):

from django.contrib import admin
from mysite.models import News

@admin.register(News)
class NewsAdmin(admin.ModelAdmin):
    list_display = ('title', 'source', 'pdate')

在程式的第2行要把想要管理的類別匯入到這個檔案,然後利用@admin_register(News)把News這個資料表納入admin後台管理。底下的類別則可以對於要管理的介面進行一些設定,其中list_display就是設定後台列表的時候想要顯示的欄位。執行結果的畫面如下所示:

透過這個後台介面,就可以自由地輸入所需要的資料了。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *