以兩個模型類爲例,一個是老師類,一個是學生類,學生類通過外鍵關聯老師類,實現一(老師)對多(學生)的關聯。
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()的值或者一個回調函數的返回值,該參數用得相對較少。