이름 그대로 DB Modeling 중에 N to N 관계인 두 개의 테이블을 연결할 때 사용한다.
N to N 관계인 테이블을 그냥 연결하면 각 테이블의 객체가 가진 고유한 id가 겹치는 상황이 발생하며 이를 방지하기 위해 본래 중간 테이블이 필요하나, 장고에선 두 테이블 중 한 곳에만 ManyToManyField를 선언해주면 자동적으로 중간 테이블을 생성해준다.
장점은 효율성이다.
영화배우(actors)와 영화(movies)의 DB를 생성할 때에 ManyToManyField를 사용하지 않고 각자 외래키를 주게 된다면 그 이후 작업내용은 아래와 같다.
첫째, movies_actors 중간 테이블을 생성하여
둘째, 각 테이블의 객체가 가진 id를 일일히 삽입해줘야 한다.
그러나 ManyToManyField를 사용한다면?
각 테이블에 이미 생성된 객체들의 id만을 따와서 서로 연결만 해주면 알아서 movies_actors에 반영된다!!!