Django ORM的外鍵ForeignKey中的on_delete的參數解析

以兩個模型類爲例,一個是老師類,一個是學生類,學生類通過外鍵關聯老師類,實現一(老師)對多(學生)的關聯。

class Teachers(models.Model):
    """老師類"""
    name = models.CharField(max_length=10)


class Students(models.Model):
    """學生類"""
    name = models.CharField(max_length=10)
    teacher = models.ForeignKey(Teachers, on_delete=models.CASCADE)

on_delete有6個可選值,分別是:

  • CASCADE      刪除級聯,當父表的記錄刪除時,子表中與其相關聯的記錄也會刪除。即:當一個老師被刪除時,關聯該老師的學生也會被刪除。
  • PROTECT      子表記錄所關聯的父表記錄被刪除時,會報ProtectedError異常。即:當一個學生所關聯的老師被刪除時,會報ProtectedError異常。
  • SET_NULL      子表記錄所關聯的父表記錄被刪除時,將子表記錄中的關聯字段設爲NULL,注意:需要允許數據表的該字段爲NULL。
  • SET_DEFAULT      子表記錄所關聯的父表記錄被刪除時,將子表記錄中的關聯字段設爲一個給定的默認值。
  • DO_NOTHING      子表記錄所關聯的父表記錄被刪除時,什麼也不做。
  • SET()      設置爲一個傳遞給SET()的值或者一個回調函數的返回值,該參數用得相對較少。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章