Django ⎜ ManyToManyField.db_talbe(중간테이블) 장고 ORM 사용하기

ManyToManyField.db_table(중간테이블)의 ORM 사용방법

Django에서 ManyToMany 관계를 설정하면 각 Model을 연결해주는 table이 생기게 된다.
일명 중간테이블이라고도 불리는 이 테이블은 models.py에서 Class를 설정해줘도 되지만 해주지 않아도 database에 table은 자동으로 생성이 된다. (이하 중간테이블이라 칭하도록 하겠다..)
이 포스팅은 중간테이블을 위한 Model Class를 따로 지정해주지 않았을 때 ORM으로 어떻게 접근하는지 정리한 것이다.

중간테이블에 csv로 데이터 넣는 방법은 이전 포스팅에 정리해뒀다.
https://sik-kim.github.io/python/NtoN_DB-Uploader/


중간테이블의 모든 데이터 불러오기

User와 Brand라는 Model이 ManyToMany 관계에 있다.
models.py는 아래와 같이 된다.

# in models.py
class User(models.Model):
    favor = models.ManyToManyField('brand.Brand', related_name='favors')

이때 User와 Brand 모델의 중간테이블의 모든 데이터 접근하는 ORM은 이와 같다.
User에서 접근할 때와 Brand에서 접근할 때 차이가 있다.

User에서 접근 시

Model.relation.through.objects.all() ex) User.favor.through.objects.all()

Brand에서 접근 시

Model.related_name.through.objects.all() ex) Brand.favors.through.objects.all()

이런식으로 중간테이블에도 filter, get, delete 등의 queryset 사용이 가능해진다.


shell 화면

django shell


중간테이블 database 화면

db

댓글남기기