models設計好後,在指令行視窗,運作python3 manage.py makemigrations 為模型的改變生成遷移檔案;運作 python3 manage.py migrate 對應用資料庫進行遷移。
6.1 資料遷移
資料庫遷移被分解成生成和應用兩個指令是為了讓咱們能夠在代碼控制系統上送出遷移資料并使其能在多個應用裡使用;這不僅僅會讓開發更加簡單,也給别的開發者和生産環境中的使用帶來友善。
遷移那些App的models,是在settings.py的INSTALLED_APPS節點擷取的。沒在這裡配置的,不會進行遷移。
如果想指定隻遷移其中的一個,可以用指令的最後加上App的名稱,如:python3 manage.py makemigrations base和python3 manage.py migrate base。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5iM0QzM4IDOxUmZyQGOhRGM3ImN3YDOjFmYlNjY0gzN38CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
如果想要查詢遷移檔案對應的SQL語句,可以執行指令:python3 manage.py sqlmigrate base 0001一探究竟。咦,怎麼會有一個id字段,剛剛明明沒定義,是不是弄錯了?沒有錯,它是從父類(models.Model)繼承下來的自增長類型的主鍵。
BEGIN;---- Create model Post--CREATE TABLE "base_post"("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "name" varchar(60) NOT NULL, "createDate" datetime NOT NULL);COMMIT;
6.2 增删改查
Django架構,除了生成資料表之外,竟還生成了對資料庫操作的API,厲害,厲害,咱得趕緊去look一look。
1. 新增崗位資料
from base.models import Post
p = Post(name='研發經理')
p.save()
2. 删除崗位資料
from base.models import Post
Post.objects.filter(id=1).delete()
3. 修改崗位資料
from base.models import Post
Post.objects.filter(id=1).update(name='項目經理')
4. 查詢所有資料
from base.models import Post
posts = Post.objects.all()
按條件查詢(隻列出重要的部分)
操作資料庫的方法挺多的,聚合方法,可以在django.db.models中找到。不用一一去驗證,那樣太累,用到時再去查找。
按我說,直接用原生的SQL文法最簡單,如果你會的話。
from base.models import Postfrom django.db.models import Countpost = Post.objects.annotate(num_name=Count('項目經理'))result=post[0].num_name
這次的内容有點多,再繼續下去的話,怕你傷着了,咱們先告一個段落,明天繼續。
輕松一刻,放松一下,聽一首曲,抿一口茶,讀一本書,漲點姿勢。