728x90
반응형
Django에서 ManyToMany를 통해 Table을 연결하면,
예를 들어 A, B 테이블을 ManyToMany를 통해 연결시
A에서 B를 연결할 경우, B에서 A 방향으로도 자동 연결
그러나 A -> B를 연결 하더라도, B -> A로 자동연결이 되는 것을 원치 않는 상황도 존재
예를 들어
A 의 row에 대한 추천 상품으로 B의 row 들을 지정한다고 해보자.
그러나 B의 row에 대한 추천 상품은 A가 아닌 C를 지정하길 원한다고 하면,
기존 ManyToMany 방식으로 B의 추천상품을 불러올 시 A가 함께 가져와진다.
이는 ManyToMany의 기본 옵션이 상호 대칭적인 symmetrical = True 이기 때문
따라서 ManyToMany설정시 symmetrical = False 옵션으로 주면, A -> B, B -> C (B -> A가 안걸리도록)와 같은 형태로
연결 가능
이 옵션을 사용할 경우, 역참조를 어떻게 할것인지를 반드시 정해줘야 한다.
=> related_name 설정을 통해 B -> A 방향의 연결을 불러올 수 있다.
* 참조할 테이블을 자기 자신으로 하는 경우 예시 ('self')
recommended_item = models.ManyToManyField('self', symmetrical=False, related_name='inversed_item')
728x90
반응형
'Python > Django' 카테고리의 다른 글
Django: ckeditor # django-ckeditor # 텍스트 에디터 (0) | 2023.11.12 |
---|---|
Django: HTTP DELETE Method # HTTP # DELETE, PUT # GET, POST (0) | 2023.09.25 |
Python Django: select_related (0) | 2023.05.09 |
Python Django: 동시 접속 로그인 막기 # session # session_key (0) | 2023.04.30 |
Python Django - request session 이용하기 # get 에서 post로 data 넘기기 (0) | 2023.04.28 |