[점프 투 장고] 3-12 장 모델수정 문의

안녕하세요.

점프 투 장고 3-12장 추천 기능을 실습하다가 문의드립니다.
다대다 관계로 모델변경시 새로운 테이블이 생기는것으로 이해하면 되는지요.

진행경과

말씀대로 pybo/models.py 에서 Qustion 과 Answer 모델 수정을 했고
makemigrations 와 migrate 까지 모두 잘 되었습니다.

models.py

voter = models.ManyToManyField(User, related_name='voter_question')
voter = models.ManyToManyField(User, related_name='voter_answer')

makemigrations후

operations = [
    migrations.AddField(
        model_name='answer',
        name='voter',
        field=models.ManyToManyField(related_name='voter_answer', to=settings.AUTH_USER_MODEL),
    ),
    migrations.AddField(
        model_name='question',
        name='voter',
        field=models.ManyToManyField(related_name='voter_question', to=settings.AUTH_USER_MODEL),
    ),
]

수행결과

저는 Qustion 과 Answer 모델에 voter 관련 필드가 추가 될 것으로 기대했는데
별도의 Qustion_voter, Answer_voter 테이블이 생성되더군요.

CREATE TABLE "pybo_question_voter" 
                ("id" integer NOT NULL 
                                   PRIMARY KEY AUTOINCREMENT, 
                  "question_id" integer NOT NULL
                                   REFERENCES "pybo_question" ("id")
                                   DEFERRABLE INITIALLY DEFERRED,
                  "user_id" integer NOT NULL
                                 REFERENCES "auth_user" ("id")
                                 DEFERRABLE INITIALLY DEFERRED
                 )

다대다 관계의 경우 이렇게 별도의 테이블이 만들어지는것으로 이해하면 되는건지 궁금합니다.
감사합니다.

최정현 52

M 2021년 6월 9일 4:22 오후

목록으로
1개의 답변이 있습니다. 1 / 1 Page

ManyToMany인 경우 별도의 테이블이 생성됩니다.

다대다 관계는 질문 1개에 여러명이 추천할 수 있고 1명이 여러개의 질문에 추천할 수 있는 관계이기 때문에 새로운 테이블로 그 관계를 구성합니다.

박응용

2021년 6월 9일 8:15 오후

명쾌한 설명 감사합니다. 점푸투장고를 통해 개발패턴 이해에 많은 도움 받고 있습니다. 회신 감사드립니다^^ - 최정현님, 2021년 6월 9일 8:41 오후 추천 , 대댓글