Django 留言功能實作指南:從模型設計到應用完成
更新日期: 2024 年 12 月 2 日
本文為 Django 高階教學,第 3 篇:
- 使用 Poetry 管理 Django 專案:完整指南
- 使用 ModelForm 優化 Django 表單與資料庫操作
- Django 留言功能實作指南:從模型設計到應用完成 👈 所在位置
- Django 留言功能新增與視圖互動詳解
- 在 Django 中實現留言檢索與排序功能:完整指南
- 在 Django 中實現留言換行與顯示時間功能
- 在 Django 中實現留言刪除功能:完整指南
- 在 Django 中實現軟刪除功能:完整指南
- 在 Django 中實現軟刪除功能:Fat Model, Thin View
建議閱讀本文前,先閱讀完 Django 進階教學 系列文
為履歷(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
表。
小結
透過以上步驟,我們完成了以下內容:
- 留言模型設計:通過
ForeignKey
建立多對一關係,記錄留言內容及時間。 - 應用建立與註冊:創建
comments
應用並在專案中啟用。 - 數據庫同步:完成模型的遷移,確保資料庫與模型保持一致。
下一步,可以進一步實現留言的新增、刪除和前端顯示功能,完善網站的互動體驗。