on_delete
옵션이란?Django에서 모델링을 할 때, ForeignKeyField가 바라보는 데이터가 삭제 됐을 때 해당 요소를 처리하는 방식을 지정하는 방식
(참조 된 객체가 삭제 될 때 채택되어야하는 동작을 구성하는 데 사용)
on_delete
옵션의 종류참조된 객체가 삭제되면, ForeignKeyField를 포함하는 모델 인스턴스(row)도 같이 삭제
product_id
가 참조하는 객체인 product
가 삭제되면 product_images
도 삭제된다.
해당 요소가 같이 삭제되지 않도록 ProtectedError
를 발생
bank_id
가 참조하는 객체인 bank
를 삭제하려고 할 때 ProtectedError
발생
참조하는 개체와 참조 된 개체가 ‘CASCADE’관계에서 다른 공통 개체를 참조하는 경우 참조 된 개체의 삭제 허용
참조 된 객체의 삭제를 방지하고 RestrictedError
발생
PROTECT
와 유사한듯 보이나, PROTECT
와 달리 참조 된 객체가 다른 객체를 참조하고있는 것은 CASCADE
관계이고 또한 삭제되는 경우 삭제가 허용된다.
ForeignKeyField 값을 NULL
로 변경. null=True
일 때만 사용 가능
main_category_id
가 참조하는 객체인 main category
가 삭제되면, ForeignKeyField인 main_category_id
값이 NULL
로 바뀐다.
(서브 카테고리의 3
번 객체인 '축구'가 메인 카테고리의 1
번 객체인 '스포츠'를 참조하고 있다고 할 때, '스포츠'가 삭제되면 축구 객체의 main_category_id
는 1
에서 NULL
로 바뀐다.)
ForeignKeyField 값을 default 값으로 변경. default 값이 있을 때만 사용 가능
ForeignKeyField 값을 SET에 설정된 함수 등에 의해 설정
말그대로 아무 조치도 취해지지 않게 된다.
참고