Django-2.0 ForeignKey(on_delete)

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),
    )
發佈了42 篇原創文章 · 獲贊 28 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章