CASCADE:
⇒`級聯刪除。Django模擬SQL約束ON DELETE CASCADE的行爲,並刪除包含ForeignKey的對象。
PROTECT:
⇒`防止刪除被引用的對象,通過引發 ProtectedError一個子類 django.db.IntegrityError。
SET_NULL:
⇒設置ForeignKeynull; 這是唯一可能 null的True。
SET_DEFAULT:
⇒將ForeignKey其設置爲其默認值; ForeignKey必須設置默認值 。
SET():
⇒設置爲ForeignKey傳遞給的值 SET(),或者如果傳遞了可調用對象,則調用它的結果。在大多數情況下,爲了避免在導入models.py時執行查詢,必須傳遞可調用對象:
如下爲官方對set()參數示例:
from django.conf import settings
from django.contrib.auth import get_user_model
from django.db import models
def get_sentinel_user():
return get_user_model().objects.get_or_create(username='deleted')[0]
class MyModel(models.Model):
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.SET(get_sentinel_user),
)