내일배움캠프 5주차 WIL

0v0baek·2023년 4월 17일
0

WIL

목록 보기
5/14

[Django] models.py의 다른 모델을 참조할 때(상속, 받아오기)

ForeignKey

  • null 값을 가질 수 있음. (그러나 일반적으로 null 값을 주지 않음.)
  • 모델들의 관계를 1:多 로 나타낼 수 있음
foreign = models.ForeignKey(받아올 모델 명, on_delete=models.CASCADE)

OneToOneField

  • null 값을 가질 수 없음. (일반적으로 null 값을 주지 않음.)
  • 모델들의 관계가 1:1 (일대 多 불가능)
one_to_one = models.OneToOneField(받아올 모델 명, on_delete=models.CASCADE)

ManyToManyField

  • 모델들의 관계가 多:多
  • 일반적으로 null 값을 주지 않음.
many_to_many = models.OneToOneField(받아올 모델 명)

on_delete

on_deleteForeignKey가 바라보는 값(받아오는 모델)이 삭제 될 때 어떻게 처리할 지 정해주는 역할이다.
(장고가 모델을 구성할 때, 참조 무결성을 유지하기 때문에!!)

👉 참조 무결성 : 관련 된 테이블 간의 관계를 유효하게 하는 규칙. 사용자가 함부로 or 실수로 데이터를 삭제하거나 수정하지 못하게 막아줌!

on_delete (삭제 할 경우)

  • CASCADE : 관련 된 두 테이블 데이터를 모두 삭제한다.
  • PROTECT : 삭제 될 경우 ForeignKeyProctectedError를 발생시킨다.
  • SET_NULL : 삭제 될 경우 ForeignKey가 바라보는 값이 NULL이 된다. 뒤에 null=True를 붙여줘야 함!
  • SET_DEFAULT : 삭제 될 경우 ForeignKey가 바라보는 값이 default가 된다.

해당 블로그에서 위 내용들을 아주 간단하게 설명해줬는데. 웃기다

👇
CASCADE : "안녕 세상에, 나는 article_B 없이는 살 수 없다"고 자살한다.
PROTECT : "아니오! 제발! 하지마! 난 너 없이는 살 수 없어!"
SET_NULL : "좋아, 내가 너의 사람이 아니라면 난 아무도 아니야"
SET_DEFAULT, SET() : "괜찮아, 여분의 애인이있어, 지금부터 article_C를 참조 할 것이다"
DO_NOTHING : "나는 현실에 직면 할 수 없다, 그것이 나에게 남아있는 유일한 것이더라도 당신의 이름을 계속 부르겠다!"
👆

참고 글

[Django]

profile
개발 공부 하는 비전공자 새내기. 꾸준히 합시다!

0개의 댓글