참조하는 값이 삭제될 때 ForeignKeyField를 포함하는 모델 인스턴스도 삭제된다.
class Product(models.Model):
...
sub_category = models.ForeignKeyField('SubCategory', on_delete=models.CASCADE)
참조하는 값이 삭제될 때 삭제가 되지않도록 ProtectedError를 발생시킨다.
class Product(models.Model):
...
sub_category = models.ForeignKeyField('SubCategory', on_delete=models.PROTECT)
# 지워지는 걸 방지
참조하는 값이 삭제될 때 ForeignKeyField값을 null로 바꾼다. (null=True일 때만 가능)
class Option(models.Model):
product = models.ForeignKeyField('Product', on_delete=models.SET_NULL, null=True)
참조하는 값이 삭제될 때 ForeignKeyField값을 default 값으로 바꾼다. (default값이 있을 때만 가능)
class Option(models.Model):
product = models.ForeignKeyField('Product', on_delete=models.SET_DEFAULT, default=1)
참조하는 값이 삭제될 때 ForeignKeyField값을 SET에 설정된 함수 등에 의해 설정된다.
def set_FK_Model_test():
return TestModel.objects.get(id=1)
class TestMd(models.Model):
test = models.ForeignKeyField(TestModel, on_delete=models.SET(set_FK_Model_test))
참조하는 값이 삭제될 때 아무런 행동을 취하지 않는다. 하지만 없는 값을 참조하게 되는 문제가 생긴다
any = models.ForeignKeyField(TestModel, on_delete=models.DO_NOTHING