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),
)