해결된 질문
작성
·
260
·
수정됨
0
보통 다대다관계 모델링에서는 외래키를 두군데 다 심을 수 있는것인지? 그리고 보통 한군데에다가 심는다면 어디다가 심는지 기준이나 관습 궁금합니다.
그리고 다대다관계 일 경우는 외래키라고 안부르는거죠?
그냥 이럴땐 ManyToManyField 를 심는다 라고 하나요?
답변 1
1
안녕하세요.
M2M은 각 모델 상호 간의 Many 관계이므로, 두 모델 중 어느 한 쪽에라도 선언할 수 있습니다.
모든 일이 다 그러하지만, 모델링에도 정답이 없습니다. 꾸준히 의심하고 고민하고 개선할 뿐이죠.
1:N 관계는 models.ForeignKey 필드 만으로도 구현이 됩니다.
M2M 관계는 models.ManyToManyField 필드로 구현을 합니다. 내부 구현으로는 관계를 저장하는 별도의 테이블이 생성되고, 관계테이블에서는 두 모델에 대한 models.ForeignKey 필드가 정의됩니다. // 데이터베이스 테이블에서 M2M 관계를 어떻게 구현해야할까를 고민해보시면, 그 관계를 저장하는 중간 테이블이 꼭 필요하게 됩니다. (관련 장고 공식문서 : https://docs.djangoproject.com/en/4.2/ref/models/fields/#django.db.models.ManyToManyField.through)
각 관계에 대해서는 "관계를 맺는다" 라는 표현이 좀 더 적합하지 않을까 싶네요.
화이팅입니다. :-)
아~ 확인했습니다!
감사합니다!