class A(models.Model):
date = models.DateField()
class B(models.Model):
foreign = models.ForeignKey(A, on_delete=models.CASCADE)
on_delete 參數(shù)
當(dāng)一個(gè)被外鍵關(guān)聯(lián)的對(duì)象被刪除時(shí)竣蹦,執(zhí)行的相應(yīng)操作
CASCADE
模擬SQL語言中ON DELETE CASCADE約束,將定義有外鍵的模型對(duì)象同時(shí)刪除(django 1.11默認(rèn)值)窃爷,即A中被刪除時(shí),B也被刪除 (關(guān)聯(lián)的那些行)
PROTECT
阻止上面的刪除操作姓蜂,但是彈出ProtectedError異常
SET_NULL
將外鍵字段設(shè)為null按厘,只有當(dāng)字段設(shè)置了null=True時(shí),才可以使用該參數(shù)
SET_DEFAULT
將外鍵字段設(shè)為默認(rèn)值钱慢,只有當(dāng)字段設(shè)置了default參數(shù)是逮京,才可以使用該參數(shù)
DO_NOTHING
什么也不做
SET()
設(shè)置為一個(gè)傳遞給SET()的值火一個(gè)回調(diào)函數(shù)的返回值
其中CASCADE
,SET_NULL
最常用