Many to Many.
개념은 이해가 가지만, 실제 구체적인 적용에 있어서 헷갈리는 부분이 많았다. 실제 이번 프로젝트에 적용한 부분들을 보면서 이해하는 것이 쉬울 것 같아 참고하였다.
우선 다대다의 개념에 대해 간단하게 예시를 들어보자면, 피자와 토핑과의 관계가 있다.
하나의 피자에는 여러개의 토핑이 들어갈 수 있고, 하나의 토핑은 여러개의 피자에 들어갈 수 있으므로 다대다 관계 성립!
실제 우리 프로젝트에서도 Product 와 FilterList 의 관계가 그러했다.
하나의 상품은 여러 개의 필터를 가질 수 있고, 하나의 필터는 여러 상품에 속할 수 있으므로 역시 다대다 관계 성립!
그리고 이들의 중간 table은 ProductFilter category 였다.
우선 이들의 관계를 설정해주기 위해서는 Product 와 Filterlist 각각이 먼저 존재해야 한다.
그리고 나서 이 둘을 이제 연결해주는건데, through 를 통해 중간 테이블이 무엇인지를 명시해줄 수 있다. 그게 아니면 장고가 자동적으로 중간 테이블을 만든다고 하는데 이부분도 더 공부가 필요하다.
우선 오늘 이해한 내용만 정리해보자.
Models.py 에서 Product 클래스에 있는 filter_list 를 봐보자.
filter_list = models.ManyToManyField('FilterList', through='ProductFilter', related_name='products')
그리고 FilterList 클래스에 있는 product를 봐보자.
product = models.ManyToManyField('Product', through='ProductFilter', related_name='filterlists')
혹시나 까먹고 이해가 안갈 미래의 나를 위해 지저분하지만, 아이패드 필기 첨부...
related_name도 이 경우와 역참조 할 때랑 상황이 어떻게 되는지 다시 한 번 정리해야 할 것 같다.
'Django' 카테고리의 다른 글
[Django] Self-reference model (0) | 2020.07.05 |
---|---|
[Django] CSV데이터_데이터베이스_업로드 (1) | 2020.06.28 |
[Django]Select_related (0) | 2020.06.25 |