Django | Error : you cannot alter to or from M2M fields, or add or remove through= on M2M fields

2022. 8. 30. 19:38·Django
반응형

ManyToManyField를 적용하는 모델링 수정을 하고 makemigration -> migrate를 했는데 

 

ValueError: Cannot alter field review.Review.user_bookmarks into review.Review.user_bookmarks - they are not compatible types (you cannot alter to or from M2M fields, or add or remove through= on M2M fields)

 

이런 에러메세지가 떴다. 

매니투매니 필드에 through속성을 나중에 추가하거나 지우면 안된다는 뜻 같다. 

 

마이그레이션 파일을 열어보면 아래처럼 작성이 되어 있다.

operations = [
        migrations.AlterField(
            model_name="review",
            name="user_bookmarks",
            field=models.ManyToManyField(
                related_name="bookmark_reviews",
                through="user.UserReviewBookmark",
                to="user.user",
            ),
        ),
    ]

 

해결법

AlterField를 없애고 괄호 안 내용을 똑같이 해서

RemoveField로 지워주고 AddField로 다시 생성하도록 바꾸면 된다.

operations = [
        migrations.RemoveField(
            model_name="review",
            name="user_bookmarks",
            field=models.ManyToManyField(
                related_name="bookmark_reviews",
                through="user.UserReviewBookmark",
                to="user.user",
            ),
        ),
        migrations.AddField(
            model_name="review",
            name="user_bookmarks",
            field=models.ManyToManyField(
                related_name="bookmark_reviews",
                through="user.UserReviewBookmark",
                to="user.user",
            ),
        ),
    ]

 

다시 migrate를 해주면 정상적으로 migrate가 된다.

 

 

 

참고

https://www.youtube.com/watch?v=vKXXGAFLbp4

반응형
저작자표시 비영리 변경금지 (새창열림)

'Django' 카테고리의 다른 글

Django 모델에서 기본 키 참조: pk vs id  (6) 2024.10.10
Django | 쿼리셋 내 객체 수  (0) 2022.09.22
DRF | 페이지네이션  (0) 2022.08.30
Django | models : verbose_name  (0) 2022.08.20
Django | ORM : on_delete=models.CASCADE  (0) 2022.08.14
'Django' 카테고리의 다른 글
  • Django 모델에서 기본 키 참조: pk vs id
  • Django | 쿼리셋 내 객체 수
  • DRF | 페이지네이션
  • Django | models : verbose_name
이라후
이라후
  • 이라후
    화이팅
    이라후
  • 전체
    오늘
    어제
    • 분류 전체보기 (133)
      • TIL (23)
      • 기타 (26)
      • Python (14)
      • Django (10)
      • JavaScript (8)
      • git & GitHub (8)
      • Web (10)
      • Go (3)
      • wecode (31)
  • 반응형
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
이라후
Django | Error : you cannot alter to or from M2M fields, or add or remove through= on M2M fields
상단으로

티스토리툴바