본문 바로가기
First step/web depeloper step1

역참조 ,join 이해해보기

by Joshua21 2021. 12. 17.

나를 참조하고있는 테이블에 대한 정보를 가져오기 위해서 역참조를 하게된다 

보통은 수가 많은 쪽이 수가 적은 쪽을 참조하거나 또는 적은 쪽이 상위 카테고리일경우가 많다.

예를 들어 영화사는 많은 영화를 제작배포 하고 영화는 하나의 영화사만 가지고 있기때문에  영화가 영화사를 참조하는 관계가 된다. DB 상의 테이블에서 나를 참조하고있는 테이블의 정보를 보고싶을때 접근하는 방식이 역참조라고 할수있다.

 

접근할때 쿼리셋으로 접근하는 것인지 쿼리셋안에 있는 객체에 접근 하는 것인지를 잘 생각해보고 적용해야 한다.

 

models.ManyToManyField를 사용할떄 through 를 지정해두면 내가 원하는 이름의 테이블로 매니투매니 지정가능하고

중간테이블 +a의 역할로 사용가능하다. 예를 들어 제품의 수량을 체크하기 위해 중간테이블에 quantity 라는 컬럼을 추가하는 등으로 사용할수있다. related_name 을 필드안에 지정해주면 더 편하게 가능하다

 

product1 = Product.objects.get(id=1) 처럼 모델이름.objects.get(특정할 기준) 으로 Product라는 모델안에 있는 많은 데이터들(쿼리셋형태)중에 하나를 특정해서 객체로 꺼내온다음

product1.review_set.all() 을 통해서 product1이라는 객체를 참조하고있는 테이블명_set.all() 을 통해서 역참조 테이블에 데이터(쿼리셋형태)를 가져올수있다.

 

SQL 의 inner join으로 중간테이블을 붙이고 중간테이블에서 또 연결되어있는 테이블의 정보를 가져 올 수가 있다.

'First step > web depeloper step1' 카테고리의 다른 글

Docker (명령어 모음)  (0) 2021.12.26
Docker -1  (0) 2021.12.23
Unit Test  (0) 2021.12.15
select, prefetch related  (0) 2021.12.08
Dr Jart 클론 프로젝트 간 새롭게 사용한 것  (0) 2021.12.07