1. 1:N?
- Many-to-one relationships
- 한 테이블의 0개 이상의 레코드가 다른 테이블의 레코드 한 개와 관련된 경우
⇒ 예를 들어 고객(1)의 주문(N), 게시글(1)의 댓글(N)의 관계라고 할 수 있겠다.
2. Foreign Key?
- 외래키
- 다른 테이블의 행을 식별할 수 있는 키 ⇒ 참조되는 테이블의 PK를 가리킨다.
- 참조무결성 때문에 테이블의 유일한 값을 참조해야 한다.
- 참조하는 테이블 행 여러개가 참조되는 테이블의 동일한 행을 참조할 수 있다.
3. models.py 재 생성하기
#articles/models.py
class Comment(models.Model):
article = models.ForeignKey(Article, on_delete=models.CASCADE)
content = models.CharField(max_length=200)- ForeignKey(참조하는 모델클래스, on_delete, **options)
- on_delete option : https://docs.djangoproject.com/en/3.2/ref/models/fields/#foreignkey
- 외래키가 참조하는 객체(부모)가 사라졌을때?
- CASCADE : 자식을 부모따라 삭제합니다
- PROTECT : 자식을 보호합니다.
- SET_NULL : 부모 삭제 시에 NULL이 됩니다.
- SET_DEFAULT : 부모 삭제시에 디폴트 값으로 돌아갑니다.
4. Related manager
- 역참조?
- N:1 관계에서 1이 N을 참조하는 것
→ 즉 게시물에서 덧글을 조회하는 상황이 ‘역참조’ 이다.
article.comment_set.method()
- related_name
class Comment(models.Model): article = models.ForeignKey(Article, on_delete=models.CASCADE, related_name="comments) content = models.CharField(max_length=200)- 역참조 시에 이름이 ‘comments’로 바뀐다!!
Uploaded by N2T