django模型中有外來鍵關係的表刪除相關設定

2022-01-12 17:52:23 字數 1522 閱讀 5122

例如有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型別 資料庫會在插入資料時自動為每一條記錄分配乙個自增整數,這樣我們就完全不用擔心主鍵重...