[Django] ManyToMany Field에 대한 이해

난나다·2022년 7월 6일
0

Django

목록 보기
2/5

Django models.py에서 데이터 테이블의 many-to-many 관계 만들기

database를 다루는 상황에서는 데이터 테이블들간의 관계가 "일대일", "일대다", "다대다" 등 다양하게 생성됩니다.

이러한 상황에서 다대다의 경우에는 각 테이블 끼리만 연결하기에는 그 방법이 너무 복잡해지기에 중간 테이블을 생성하여 다대다 관계를 생성합니다.

이런식으로 작성해서 중간테이블을 통해 참조하고자 하는 테이블로 들어가 원하는 값을 가져오는 형식입니다.

하지만 이런식으로 테이블을 작성하면 직접적으로 참조하는 테이블로 이동할 수 없기 때문에 데이터를 관리하는 측면에서는 불편한 점이 굉장히 많이 생기게 됩니다.

ManyToManyField 사용하기

이보다 더 편한 방법으로 다대다 관계를 생성하는 방법으로 두 테이블 중 한 테이블에 ManyToManyField를 추가해줍니다.

이렇게 되면 Django에서는 두 테이블의 연결 관계를 many-to-many로 확인하고 자동으로 중간 테이블을 생성하게 됩니다.

두 테이블간의 관계가 심플한 경우에는 사용하기 좋은 방법이지만 중간테이블에서 두 테이블의 값을 받아와 새로운 값을 저장하는 속성을 만들어야 될 경우에는 좋지 못한 방법입니다.

through 추가

앞서 사용한 ForeignKey의 개념과 ManyToManyField의 개념을 합친(?) 듯한 느낌이 들도록 만들어주는 방법입니다.

기존 ManyToManyField의 개념인 두 테이블을 직접적으로 연결해줌은 물론 중간테이블도 사용자가 원하면 속성을 더 추가하는데(확장하는데) 무리가 없는 방법입니다.

결론

데이터베이스의 경우에는 만드는 사람 마음이기 때문에 모델을 작성할 때 신중히 생각하는 시간을 충분히 가진 다음 다루고자 하는 데이터 모델에 가장 효율적인 구조를 가지는 것이 중요하다는 생각이 들었습니다.

개념적으로는 이해했지만 아직 많이 실습해보지 않았기에 어떤한 오류 상황이 있을 지 충분히 연습하고 또 새로운 방법이나 개념이 있다면 글을 작성해 보겠습니다.

글의 잘못된 부분이 있거나 부족한 부분에 대해 댓글 달아주시면 감사한 마음으로 확인해보겠습니다! 읽어주셔서 감사합니다.

0개의 댓글