一、makemigrations命令
makemigrations是Django中的命令之一,它的主要作用是根據models.py文件中的內容創建一個migration文件,以便後續的執行migrate命令來同步數據庫結構和models.py文件的定義。
使用makemigrations命令可以輕鬆地更改數據庫模型而不會影響到已有的數據。它將自動在數據庫中創建一個新的遷移,這個遷移可以讓你安全地變更模型定義,並且能保留歷史記錄以便重複安裝或升級。
makemigrations命令可以被執行多次,每次執行會對比models.py文件和當前已有的遷移記錄,生成新的遷移文件。
python manage.py makemigrations
二、makemigrations怎麼讀
makemigrations命令中的“make”單詞意思是“創造”或“製作”,“migrations”單詞表示“遷移”。合在一起表示“創建一個數據庫遷移記錄”。
三、migration
一個migration文件對應着一個數據庫遷移記錄(可以理解為對數據庫操作的一個版本),其中包含了所有關於對數據庫的修改和變更的信息。
當執行makemigrations命令時,Django會檢測models.py和已有的遷移記錄文件並生成一個新的migration文件。
這個migration文件包含了關於數據庫結構變更的詳細信息,包括了創建,刪除或修改數據庫表結構等操作,同時也包含了某些操作所需的數據變更。
# 從一個已有的模型生成遷移文件 python manage.py makemigrations yourappname
四、migrate
migrate命令是Django中用來同步數據庫結構與models.py文件的定義的命令。
當執行migrate命令時,Django會查找所有已經存在的migration文件以及它們包含的關於數據庫結構變更的詳細信息,然後應用這些變更來更新數據庫的結構。
此外,遷移還可以進行數據填充,固定數據更新等操作。
# 執行遷移 python manage.py migrate
五、legislation
當創建遷移文件時,需要遵守一定的規則和準則。這些規則通常稱為“legislation”。
Django migration的legislation規則包括:每個model必須定義在models.py文件中,每個model必須有一個primary鍵,對於外鍵、多對多等關係,必須使用ForeignKey和ManyToManyField等Django提供的方式進行定義。
在編寫models.py文件和遷移時遵守這些規則,可以有效避免在應用遷移時出現問題。
完整示例代碼
# models.py文件 from django.db import models class Article(models.Model): title = models.CharField(max_length = 255) content = models.TextField() class Comment(models.Model): article = models.ForeignKey(Article, on_delete = models.CASCADE) content = models.TextField() # 生成遷移文件 python manage.py makemigrations yourappname # 應用遷移文件 python manage.py migrate
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/239006.html