이미 있는 Model의 데이터에 django ManyToMany 관계를 추가하는 방법


https://docs.djangoproject.com/en/1.8/topics/db/examples/many_to_many/

장고 메뉴얼을 보다가 궁금한점을 질문 드립니다.

메뉴얼에서는 모델을 선언한뒤에 쉘에서 인스턴스를 만들고 관계 데이터를 저장하는데요.

이미 저장되어 있는 데이터의 경우 어떻게 관계형 데이터를 링크(?) 시킬 수 있는지요.

쉘에서 메뉴얼대로 따라해보고 있는데 계속 결과가 [] 로만 나오네요 ㅠㅠ

  • 2016년 09월 06일에 수정됨
    루비와 파이썬을 좋아합니다. 새로운 언어를 배우는것도 좋아해요. 모바일 게임도 조금 만들어 봤습니다.
  • 2016년 09월 06일에 작성됨

조회수 149


1 답변


models.py에서 models.ManyToManyField를 추가한 다음에 manytomakemigration과 migrate를 수행하셨나요? 그렇게 하고 나면 어드민에서 이와 같은 필드가 생겨서 배우에 영화를 추가할 수 있습니다.

이미지

그리고 Shell에서도 수행이 가능한데요. 아래와 같이 Shell명령어를 통해 작업이 가능합니다.

(1)영화 저장하기

>>> from movielibrary.models import Movie
>>> from movielibrary.models import Actress
>>> notting_hill = Movie.objects.filter(title='Notting hill')
>>> notting_hill
[<Movie: Notting hill>]
>>> notting_hill[0]
<Movie: Notting hill>
>>> Julia = Actress.objects.filter(title='Julia Roberts')[0]
>>> Julia
<Actress: Julia Roberts>
>>> Julia.movies.add(notting_hill[0])

(2) 저장한 정보 불러오기(배우기준)

>>> Julia.movies.all()
[<Movie: Pretty woman>, <Movie: Notting hill>]

(3) 저장한 정보 불러오기(영화 기준)

>>> notting_hill[0].actress_set.all()
[<Actress: Julia Roberts>]
  • 2016년 09월 06일에 작성됨
    루비와 파이썬을 좋아합니다. 새로운 언어를 배우는것도 좋아해요. 모바일 게임도 조금 만들어 봤습니다.

  • 아!! 그렇군요. 저는 지금 데이터에 미리 저장되어 있는 상태에서 다대다 model 필드만 추가해서 migrate까지 해놓은 상태 입니다. 이제 말씀해주신 것처럼 추가를 해야 하는데 이미 저장되어 있는 데이터를 추가하려면, 1000명의 배우를 한번에, 어떤 문법을 써야 하는지요?    Jinwithyoo   2016.9.6 11:33     
  • 이미 저장된 1000명의 배우에 하나의 영화를 저장하는건가요? for actress in Actress.objects.all(): 와 같이 반복문에서 배우가 출연한 영화를 저장할 수 있겠네요.    정두식   2016.9.7 16:52     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close