Django
Django Relationship Fields
- OneToOneField()
- ForeignKey(to, on_delete, **options)
- N:1 관계를 담당하는 Django의 모델 필드 클래스
- Django 모델에서 관계형 데이터베이스의 외래 키 속성을 담당
- 2개의 필수 위치 인자가 필요
- 참조하는 model class
on_delete
- 인스턴스 이름은 명시적인 모델 관계를 파악하기 위해 참조하는 모델 클래스 이름의 소문자(단수형)로 작성하는 것을 권장
- ManyToManyField()
ForeignKey arguments - on_delete
- 외래 키가 참조하는 객체가 사라졌을 때, 외래 키를 가진 객체를 어떻게 처리할 지를 정의
- 데이터 무결성을 위한 중요한 설정
- options
- CASCADE : 부모 객체(참조된 객체)가 삭제 됐을 경우 이를 참조하는 객체도 삭제
- PROTECT, SET_NULL, SET_DEFAULT 등
ForeignKey arguments - related_name
- ForeignKey 클래스의 선택 옵션
- 역참조 시 사용하는 매니저 이름(model_set manager)을 변경할 수 있음 → migration 필요
- 변경 시 기존 article.comment_set은 더 이상 사용할 수 없고, article.comments로 대체됨
Related Manager
Related manager는 N:1 혹은 M:N관계에서 사용 가능한 문맥
- Django는 모델 간 N:1 혹은 M:N 관계가 설정되면 역참조 할 때에 사용할 수 있는 Manager를 생성함.
- 역참조 : 본인을 외래 키로 참조 중인 다른 테이블에 접근하는 것.
(N:1 관계에서는 외래 키를 가지지 않은 1이 외래 키를 가진 N을 참조)
article.comment_set.method()