Django 留言功能實作指南:從模型設計到應用完成

更新日期: 2024 年 12 月 2 日

為履歷(Resume)新增留言功能是一個常見的需求。

在本指南中,我們將以留言模型的設計為起點,詳細介紹如何建立留言應用(comments app),完成數據庫設計與模型遷移,幫助新手快速上手。


規劃留言功能

預想留言模型

留言模型(Comment)需要包含以下欄位:

  • resume_id:關聯履歷的主鍵,標記該留言隸屬於哪份履歷。
  • content:留言的主要內容。
  • created_at:留言的建立時間,記錄每條留言的時間戳。

建立留言應用

建立應用

運行以下指令,創建一個名為 comments 的應用:

python manage.py startapp comments

註冊應用

打開專案目錄下的 settings.py,將新應用添加到 INSTALLED_APPS 中:

INSTALLED_APPS = [
    "django.contrib.admin",
    "django.contrib.auth",
    "django.contrib.contenttypes",
    "django.contrib.sessions",
    "django.contrib.messages",
    "django.contrib.staticfiles",
    "resumes",    # 履歷應用
    "comments",   # 留言應用
]

定義留言模型

目錄結構示意圖

新增 comments 應用後,目錄結構如下:

mysite/
├── manage.py
├── mysite/
   ├── __init__.py
   ├── settings.py
   ├── urls.py
   ├── asgi.py
   ├── wsgi.py
├── resumes/
   ├── __init__.py
   ├── admin.py
   ├── apps.py
   ├── models.py         # 定義 Resume 模型
   ├── views.py
   ├── urls.py
   ├── templates/
       ├── resumes/
├── comments/
   ├── __init__.py
   ├── admin.py
   ├── apps.py
   ├── models.py         # 定義 Comment 模型
   ├── views.py
   ├── urls.py
   ├── migrations/

comments/models.py 中定義模型

from django.db import models
from resumes.models import Resume  # 導入履歷模型

class Comment(models.Model):
    resume_id = models.ForeignKey(Resume, on_delete=models.CASCADE)  # 外鍵關聯
    content = models.TextField()  # 留言內容
    created_at = models.DateTimeField(auto_now_add=True)  # 自動設置建立時間

欄位說明

ForeignKey 的用途

  • ForeignKey:用於建立多對一的關係。
    • 在本例中,Comment 模型通過 resume 欄位關聯到 Resume 模型,表示一份履歷可以有多條留言。
    • 選項 on_delete
      • CASCADE:當履歷被刪除時,相關的留言也會被自動刪除。
      • RESTRICT:阻止刪除操作,保留相關資料。
      • SET_NULL:當履歷被刪除時,將留言的 resume 欄位設為空值(需要設置 null=True)。

DateTimeField 的用途

  • DateTimeField:存儲日期和時間數據。
  • 選項 auto_now_add=True
    • 自動設置該欄位為當前時間,僅在記錄創建時執行一次。
    • 適用於記錄創建時間的場景,如留言、訂單建立等。

遷移模型到資料庫

完成模型定義後,需要將模型同步到資料庫。

生成遷移文件

運行以下指令生成遷移文件:

python manage.py makemigrations
  • 該指令會在 comments/migrations/ 資料夾中創建一個新的遷移文件,描述模型的變更。

應用遷移

運行以下指令執行遷移,將模型應用到資料庫:

python manage.py migrate
  • 該指令將遷移文件的內容寫入資料庫,創建 comments 表。

小結

透過以上步驟,我們完成了以下內容:

  1. 留言模型設計:通過 ForeignKey 建立多對一關係,記錄留言內容及時間。
  2. 應用建立與註冊:創建 comments 應用並在專案中啟用。
  3. 數據庫同步:完成模型的遷移,確保資料庫與模型保持一致。

下一步,可以進一步實現留言的新增、刪除和前端顯示功能,完善網站的互動體驗。

Similar Posts

發佈留言

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