ManyToManyField {django}
- ref:
Django는 ManyToManyField가 정의되면 자동으로 중계 테이블을 생성해준다. 테이블 이름은 <table_a>_<table_b>_<hash>
의 형태가 된다. 임의의 중계테이블 이름을 정의하고 싶은 경우, db_table
키워드 인자를 적용해주면 된다.
만약 중계테이블에 추가적인 메타데이터를 필요로 하는 경우, through
키워드 인자를 사용하여 원하는 모델을 중계테이블로써 활용도 가능하다. Extra fields on many to many relationships
[!question] M2M 필드를 갖고있는 모델이 약한개체인건가?
Generally, ManyToManyField instances should go in the object that's going to be edited on a form.
일반적으로, ManyToManyField 인스턴스는 직접적으로 사용될 객체에 정의되는 것이 올바릅니다.
예를 들어 "피자에 올릴 토핑"이 "토핑이 올라갈 피자" 보다는 상식적이기 때문에 Pizza에 ManyToManyField를 정의하는 것이 올바릅니다.
field 추가#
M2M 필드의 add
메서드를 호출하거나 create
메서드를 호출하면 된다.
쿼리#
M2M 필드의 all
, get
, filter
를 모두 사용 가능하다. querying in {django query}