Django - 模型與資料庫
今天我們將深入學習 Django 的模型與資料庫的整合,並設計、操作資料表以儲存和管理應用中的數據。
課程目標
- 瞭解 Django ORM (Object-Relational Mapping) 的基本概念。
- 學習如何設計模型來映射資料庫表。
- 掌握資料遷移的流程與操作數據的基本方法。
課程內容
1. 模型 (Model) 概述
1.1 模型的作用
- Django 的模型是一種定義資料表結構的方式,使用 Python 類來描述。
- 模型中的每個屬性對應資料表的一個欄位,Django 會自動將模型轉換為資料庫結構。
1.2 Django ORM 的優勢
- 提供高層級的數據操作接口,無需直接撰寫 SQL。
- 支持多種資料庫後端(例如 PostgreSQL、MySQL、SQLite)。
2. 定義模型
2.1 創建模型
在 models.py
中定義一個簡單的模型,例如書籍資訊:
1
2
3
4
5
6
7
8
9
10
11
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=200) # 書名
author = models.CharField(max_length=100) # 作者
published_date = models.DateField() # 出版日期
isbn = models.CharField(max_length=13, unique=True) # ISBN
price = models.DecimalField(max_digits=10, decimal_places=2) # 價格
def __str__(self):
return self.title # 返回書名作為模型的字串表示
2.2 模型中的欄位類型
CharField
:字串欄位,需指定最大長度。DateField
:日期欄位。DecimalField
:精確的數字類型,用於價格等。IntegerField
:整數類型。BooleanField
:布林值。TextField
:長字串。
2.3 模型的屬性與方法
- 使用
__str__()
方法定義模型的可讀性。 - 可以新增自訂方法,例如計算折扣價。
3. 資料庫遷移
3.1 建立遷移
在定義好模型後,執行以下命令生成遷移文件:
1
python manage.py makemigrations
這會生成類似以下的遷移文件:
1
migrations/0001_initial.py
3.2 應用遷移
執行以下命令將遷移應用到資料庫:
1
python manage.py migrate
3.3 檢查資料庫
- 在 PostgreSQL 中可以使用工具(如 pgAdmin 或 psql)檢查資料表結構。
- Django 自動為模型創建對應的資料表。
4. 操作資料
4.1 使用 Shell 操作
啟動 Django Shell:
1
python manage.py shell
創建數據:
1 2 3 4 5 6 7 8 9 10
from myapp.models import Book book = Book( title="Django for Beginners", author="William S. Vincent", published_date="2024-01-01", isbn="1234567890123", price=39.99, ) book.save() # 儲存到資料庫
查詢數據:
1 2 3 4 5 6
books = Book.objects.all() # 獲取所有書籍 print(books) # 查詢特定條件的數據 django_books = Book.objects.filter(title__icontains="Django") print(django_books)
更新數據:
1 2 3
book = Book.objects.get(id=1) book.price = 29.99 book.save()
刪除數據:
1 2
book = Book.objects.get(id=1) book.delete()
5. 管理後台的使用
5.1 註冊模型
在 admin.py
中註冊模型,讓其顯示於 Django 的管理後台:
1
2
3
4
5
6
from django.contrib import admin
from .models import Book
@admin.register(Book)
class BookAdmin(admin.ModelAdmin):
list_display = ('title', 'author', 'published_date', 'price')
5.2 使用後台管理數據
- 啟動開發伺服器並訪問 http://127.0.0.1:8000/admin/。
- 使用超級用戶帳號登入,新增或管理數據。
6. 本日總結
- 理解了模型的作用與基本結構。
- 學習了如何進行資料遷移,並操作資料。
- 瞭解了 Django 管理後台的基本功能。
作業
- 為應用新增一個模型(例如
Author
),並設置與Book
的關聯。 - 嘗試在 Django 管理後台新增或修改數據,觀察對資料庫的影響。
- 在
views.py
中新增一個視圖,顯示所有書籍的列表,並使用模板渲染。
本文章以 CC BY 4.0 授權