개인 공부 후 자료를 남기기 위한 목적이므로 내용 상에 오류가 있을 수 있습니다.
2월 16일(수)
Django ManyToManyField
ManyToManyField through 속성
- Django에서 ManyToMany Field로 두 테이블의 관계를 정의하면, Django가 자동으로 두 테이블의 관계를 관리해주는 중간 테이블을 생성한다.
- 이렇게 생성된 중간 테이블을 through model이라고 하는데, 개발자가 직접 through model을 정의하면 필드를 추가한 중간 테이블을 생성할 수도 있다.
- 참고로, 자동 생성되는 중간 테이블은 두 테이블의 id 필드만을 가지게 된다. (ex. drink_id, allergy_id)
- 또한, through model을 정의할 때에는 모델을 처음 생성할 때부터 through model을 정의하거나 데이터베이스를 전부 지우고 다시 생성하면서 만들어줘야 한다.
- through model을 생성한 후에 데이터를 추가하려면 반드시 중간 테이블에 직접적으로 데이터를 넣어줘야 한다. (주의)
ManyToManyField through model
장고에서 ManyToMany Field 관계를 정의할 때 중간 테이블을 자동으로 생성해주지만, 굳이 개발자가 직접 through model 생성하는 이유는 다음과 같다.
- ManyToMany Field의 관계에서 중간 테이블을 직접 만들어주면 더욱 자세한 데이터를 구축할 수 있다.
- 예를 들어, 피자 테이블과 토핑 테이블을 ManyToMany Field 관계로 정의한 경우 중간 테이블에 토핑의 정도를 데이터로 저장할 수 있다.
- 만약, 토핑이 2배로 추가된 피자의 데이터를 중간테이블로 관리하고자 할 경우에는 토핑의 정도를 표기하는 필드명을 중간 테이블에 만들고 토핑의 정도를 보여주는 데이터를 관리할 수 있다.
- 이렇게 다대다 관계에서 발생할 수 있는 다양한 케이스를 추가 데이터로 직접 관리하기 위해 중간 테이블을 생성하여 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 |
댓글