조용하고 맑은 하늘에는 무지개가 없다
ALL ABOUT ME
Developer + DBA + Daily
모델 ForeignkeyField의 on_delete 옵션 정리
DATE 2022/07/15
TAG

1. CASCADE

from django.db import models
from django.contrib.auth.models import User

class Post(models.Model):
	author = models.ForeignKey(User, on_delete=models.CASCADE)

이 포스트의 작성자가 데이터베이스에서 삭제되었을 때, 이 포스트도 같이 삭제한다.

 

2. PROTECT

from django.db import models
from django.contrib.auth.models import User

class Post(models.Model):
	author = models.ForeignKey(User, on_delete=models.PROTECT)

이 포스트의 작성자가 데이터베이스에서 삭제될때 삭제되지 않도록 ProtectedError를 발생시킨다.

 

3. SET_NULL

from django.db import models
from django.contrib.auth.models import User

class Post(models.Model):
	author = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)

이 포스트의 작성자가 데이터베이스에서 삭제될때 ForeignKeyField 값을 null로 바꾼다. 따라서 이에 필요한 또다른 옵션은 null=True이다.

 

4. SET_DEFAULT

from django.db import models
from django.contrib.auth.models import User

class Post(models.Model):
	author = models.ForeignKey(User, on_delete=models.SET_DEFAULT, default=1)

이 포스트의 작성자가 데이터베이스에서 삭제될때 ForeignKeyField 값을 default로 바꾼다. 따라서 이에 필요한 또다른 옵션은 default=1이다.

yunicorn