選單
×
   ❮   
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

Django 模型


Django 模型是資料庫中的一個表。


Django 模型

到目前為止,本教程中的輸出都是來自 Python 或 HTML 模板的靜態資料。

現在我們將看到 Django 如何允許我們處理資料,而無需更改或上傳檔案。

在 Django 中,資料是透過稱為模型(Models)的物件建立的,實際上它們是資料庫中的表。


建立表(模型)

要建立模型,請導航到 `/members/` 資料夾中的 models.py 檔案。

開啟它,然後透過建立 Member 來新增一個 Member 表,並在其中描述表字段。

my_tennis_club/members/models.py:

from django.db import models

class Member(models.Model):
  firstname = models.CharField(max_length=255)
  lastname = models.CharField(max_length=255)

第一個欄位 firstname 是一個文字欄位,將包含會員的名字。

第二個欄位 lastname 也是一個文字欄位,包含會員的姓氏。

firstnamelastname 都被設定為最多可以包含 255 個字元。

SQLite 資料庫

當我們建立 Django 專案時,我們得到了一個空的 SQLite 資料庫。

它被建立在 my_tennis_club 的根資料夾中,檔名為 db.sqlite3

預設情況下,Django 專案中建立的所有模型都將在此資料庫中作為表建立。


遷移

現在我們已經在 models.py 檔案中描述了一個模型,我們必須執行一個命令來實際在資料庫中建立表。

導航到 `/my_tennis_club/` 資料夾並執行此命令:

py manage.py makemigrations members

這將產生以下輸出:

Migrations for 'members'
  members\migrations\0001_initial.py
    - Create model Member

(myworld) C:\Users\Your Name\myworld\my_tennis_club>

Django 建立一個描述更改的檔案,並將該檔案儲存在 `/migrations/` 資料夾中。

my_tennis_club/members/migrations/0001_initial.py:

# Generated by Django 4.1.2 on 2022-10-27 11:14

from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Member',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('firstname', models.CharField(max_length=255)),
                ('lastname', models.CharField(max_length=255)),
            ],
        ),
    ]

請注意,Django 為您的表插入了一個 id 欄位,它是一個 自動遞增數字(第一個記錄的值為 1,第二個記錄為 2 等),這是 Django 的預設行為,您可以透過描述自己的 id 欄位來覆蓋它。

表尚未建立,您需要再執行一個命令,然後 Django 將基於 `/migrations/` 資料夾中新檔案的內容,建立並執行一個 SQL 語句。

執行 migrate 命令

py manage.py migrate

這將產生以下輸出:

要執行的操作
  應用所有遷移:admin, auth, contenttypes, members, sessions
正在執行遷移
  Applying members.0001_initial... OK

(myworld) C:\Users\Your Name\myworld\my_tennis_club>

現在您的資料庫中有一個 Member 表了!


檢視 SQL

順帶一提:您可以透過執行此命令(帶有遷移編號)來檢視上面遷移中執行的 SQL 語句。

py manage.py sqlmigrate members 0001

這將產生以下輸出:

BEGIN;
--
-- Create model Member
--
CREATE TABLE "members_member" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "firstname" varchar(255) NOT NULL, "lastname" varchar(255) NOT NULL); COMMIT;


×

聯絡銷售

如果您想將 W3Schools 服務用於教育機構、團隊或企業,請傳送電子郵件給我們
sales@w3schools.com

報告錯誤

如果您想報告錯誤,或想提出建議,請傳送電子郵件給我們
help@w3schools.com

W3Schools 經過最佳化,旨在方便學習和培訓。示例可能經過簡化,以提高閱讀和學習體驗。教程、參考資料和示例會不斷審查,以避免錯誤,但我們無法保證所有內容的完全正確性。使用 W3Schools 即表示您已閱讀並接受我們的使用條款Cookie 和隱私政策

版權所有 1999-2024 Refsnes Data。保留所有權利。W3Schools 由 W3.CSS 提供支援