본문 바로가기
기타

TIL - 22.02.16

by DGK 2022. 2. 16.

 

개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.

 

2월 16일(수)

 

Django ManyToManyField


ManyToManyField through 속성

 

  1. Django에서 ManyToMany Field로 두 테이블의 관계를 정의하면, Django가 자동으로 두 테이블의 관계를 관리해주는 중간 테이블을 생성한다.
  2.  이렇게 생성된 중간 테이블을 through model이라고 하는데, 개발자가 직접 through model을 정의하면 필드를 추가한 중간 테이블을 생성할 수도 있다.
  3. 참고로, 자동 생성되는 중간 테이블은 두 테이블의 id 필드만을 가지게 된다. (ex. drink_id, allergy_id)
  4. 또한, through model을 정의할 때에는 모델을 처음 생성할 때부터 through model을 정의하거나 데이터베이스를 전부 지우고 다시 생성하면서 만들어줘야 한다.
  5. through model을 생성한 후에 데이터를 추가하려면 반드시 중간 테이블에 직접적으로 데이터를 넣어줘야 한다. (주의)

 

 

ManyToManyField through model

 

장고에서 ManyToMany Field 관계를 정의할 때 중간 테이블을 자동으로 생성해주지만, 굳이 개발자가 직접 through model 생성하는 이유는 다음과 같다.

 

  1. ManyToMany Field의 관계에서 중간 테이블을 직접 만들어주면 더욱 자세한 데이터를 구축할 수 있다.
  2. 예를 들어, 피자 테이블과 토핑 테이블을 ManyToMany Field 관계로 정의한 경우 중간 테이블에 토핑의 정도를 데이터로 저장할 수 있다.
  3. 만약, 토핑이 2배로 추가된 피자의 데이터를 중간테이블로 관리하고자 할 경우에는 토핑의 정도를 표기하는 필드명을 중간 테이블에 만들고 토핑의 정도를 보여주는 데이터를 관리할 수 있다.
  4. 이렇게 다대다 관계에서 발생할 수 있는 다양한 케이스를 추가 데이터로 직접 관리하기 위해 중간 테이블을 생성하여 ManyToMany Field 관계를 나타내는 것이다.   

 

 

'기타' 카테고리의 다른 글

TIL - 22.02.18  (0) 2022.02.18
TIL - 22.02.17  (0) 2022.02.17
TIL - 22.02.15  (0) 2022.02.16
TIL - 22.02.14  (0) 2022.02.14
TIL - 22.02.11  (0) 2022.02.11

댓글