반응형
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 |