iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 23
0

昨天我們已經將Topic註冊到管理網站了,我們今天就來新增一個主題~

首先先進入我們的網頁到看到Topic然後按旁邊的Add

進去會看到text可以給我們輸入要新增主題的名稱,在這裡我是輸入MIIA(醫學資訊),輸入完後按save我們就可以開始寫程式了

定義Entry模型

這裡是要定義一個Entry模型可以記錄我們新增主題後在裡面打的內容

首先先打開models.py檔,然後輸入下面的程式碼

from django.db import models

class Topic(models.Model):
--省略--

# 以下為新增區塊
class Entry(models.Model):
    topic = models.ForeignKey(Topic,on_delete=models.CASCADE)
    text = models.TextField()
    date_added = models.DateTimeField(auto_now_add=True)
    
    class Meta:
        verbose_name_plural = 'entries'
 
    def __str__(self):
        return self.text

上面程式碼第七行是在說第一個topic是個ForeignKey實例,foreignkey是資料庫的術語,它參照了資料庫中的另一筆紀錄,每個主題在建立時,都會為它分配一個鍵,我們會依照關聯的鍵來取得主題的相關紀錄

上面程式碼第十一行是把Meta類別嵌入到Entry類別中,在這裡它允許我們設定一個特殊屬性來告訴Django在需要引用多個條目時使用Entries

遷移Entry模型

因為我們新增了一個模型,所以需要再次遷移資料庫,這上次我們也有做過了,它的流程大概是

  1. 修改models.py
  2. 執行python manage.py makemigrations learning_logs
  3. 再執行python manage.py migrate

如下圖,我們成功create Entry模型

以管理網站登入註冊Entry

我們需要登入註冊Enrty模型就必須開啟admin.py然後須入下列程式碼

from django.contrib import admin

# Register your models here.
from learning_logs.models import Topic,Entry # 新增區塊
admin.site.register(Topic)
admin.site.register(Entry) # 新增區塊

輸入完程式碼後我們就可以再次開啟我們的網頁,我們會看到多了一個Entries,然後要新增內容的話我們可以點Entries或是點它旁邊的Add鍵

點進去後會是這個畫面,我們再點右上角的ADD ENTRY

點進去ADD ENTRY後會看到下面這個畫面,然後有一個下拉式選單點開後會看到我們一開始新增的MIIA項,我們可以選取MIIA後在下面的text區塊新增內容,新增完後再按SAVE就可以了

Django shell

輸入完資料後我們可利用互動式的終端對話模式,以編寫程式的方式來查看這些資料,如下圖

上圖的黃色指令是從虛擬環境切換到Django shell模式,如果要跳開shell模式回到虛擬環境,在Windows系統是要按下Ctrl+z再按下Enter鍵

而上圖綠色的部分在一開始我們匯入了earning_logs.models中的Topic模型,然後用Topic.objects.all()方法來取得Topic模組中的所有實例,再來我們可以用物件ID來查看它的屬性值,因為這裡我們只有新增一個MIIA,所以ID值是1,可以用它來看我們在Topic定義的text屬性,當然也可以看它的date_added屬性,只要輸入t.date_added就可以囉!

附上排版較精美的
HackMD網址:https://hackmd.io/dltcncZBRpWkR3VxjSVkFQ

今天結束,各位明天見


資料來源:<<python程式設計的樂趣>>-Eric Matthes著/H&C譯


上一篇
DAY 22 Django建立應用程式
下一篇
DAY 24 Django製作網頁
系列文
初學者Python的應用實作30

尚未有邦友留言

立即登入留言