例如有author、authordetail兩表
author = models.onetoonefield(to='author', null=true,
related_name='detail',
db_constraint=false,
on_delete=models.cascade
)
1)關係字段放在authordetail表中:作者刪除詳情刪除,詳情刪除作者保留
2)作者找詳情用 外來鍵related_name(detail),詳情找作者用 外來鍵字段(author)
3)db_constraint斷開表關聯,on_delete規定邏輯關聯刪除動作,models.cascade級聯刪除
例如book、publish兩表
publish = models.foreignkey(to='publish', null=true,
related_name='books',
db_constraint=false,
on_delete=models.do_nothing,
)
1)關係字段放在book表中(多的一方):出版社刪除書外來鍵不動,書刪除沒有任何影響
2)出版社找書用 外來鍵related_name(books),書找出版社 外來鍵字段(publish)
3)db_constraint斷開表關聯,on_delete規定邏輯關聯刪除動作,models.do_nothing關聯無動作
1)斷關聯,刪除關聯表記錄,外鍵值置空
db_constraint=false, on_delete=models.set_null, null=true,
2)斷關聯,刪除關聯表記錄,外鍵值置預設值
db_constraint=false, on_delete=models.set_default, default=1,
注意:on_delete
必須宣告models.do_nothing
為刪除級聯關係,models.cascad
為級聯關係,'set_null'置空,set_default
設為預設值
兩者區別
db_constraint
關係斷開後,但是不影響聯表查詢
例如book、author兩表
authors = models.manytomanyfield(to='author', null=true,
related_name='books',
db_constraint=false,
)
1)關係字段放在任意一方都可以:出版社刪除或書刪除彼此不影響,但關係表一定級聯刪除
2)正向找 外來鍵字段,反向找 外來鍵字段related_name
3)db_constraint斷開表關聯,on_delete不存在(不設定,本質在第三張表中設定,且一定是級聯)
Django外來鍵關係描述
注 本文需要你有一定的資料庫知識,本文的資料庫語法使用mysql書寫 django中,跟外來鍵有關的關係有三種,下面來一一介紹。這種最好理解,說白了就是最普通的外來鍵,看看下面兩個模型 class goodstype models.model name models.charfield max le...
對Django外來鍵關係的描述
注 本文需要你有一定的資料庫知識,本文的資料庫語法使用mysql書寫 django中,跟外來鍵有關的關係有三種,下面來一一介紹。onetomanyfield 這種最好理解,說白了就是最普通的外來鍵,看看下面兩個模型 class goodstype models.model name models.c...
關係模型 主鍵 外來鍵 索引
主鍵 唯一識別字段 要求 記錄一旦插入到表中,主鍵最好不要再修改,因為主鍵是用來唯一定位記錄的,修改了主鍵,會造成一系列的影響。基本選取原則 選擇與業務無關的字段,命名id id欄位常用型別 自增整數bigint型別 資料庫會在插入資料時自動為每一條記錄分配乙個自增整數,這樣我們就完全不用擔心主鍵重...