Django-2.0 ForeignKey(on_delete)
阿新 • • 發佈:2019-01-28
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),
)