-
[클론코딩] 예제로 배우는 Django 4: 블로그 (1) #책과_현실_다른_점_찾기Book 2025. 1. 31. 14:12
예제로 배우는 Django 4 - 예스24
Django 연습에 최적! 프로젝트 4개로 배우는 Django 4Django를 익히는 제일 좋은 방법은 무엇일까? 이 책에서는 ‘좋은 예제 많이 만들어 보기’를 그 답으로 정했다. 블로그, 소셜 웹사이트, 온라인 상
www.yes24.com
Chapter03 블로그 애플리케이션 확장하기
소스코드: https://github.com/PacktPublishing/Django-4-by-example/tree/main/Chapter03
현상
만약 Django 설치 시 버전 지정이 귀찮아 Django 5.1 이상을 설치했고,
책의 내용대로 djanto-taggit의 버전을 3.0.0 으로 설치할 경우
p.141 의 내용대로 makemigrations 수행 시 다음과 같은 에러가 발생한다.
File "C:\\Users\\legal\\venvs\\virtualenvs\\djangoByExample\\Lib\\site-packages\\taggit\\models.py", line 185, in <module> class TaggedItem(GenericTaggedItemBase, TaggedItemBase): File "C:\\Users\\legal\\venvs\\virtualenvs\\djangoByExample\\Lib\\site-packages\\django\\db\\models\\base.py", line 143, in __new__ new_class.add_to_class("_meta", Options(meta, app_label)) File "C:\\Users\\legal\\venvs\\virtualenvs\\djangoByExample\\Lib\\site-packages\\django\\db\\models\\base.py", line 371, in add_to_class value.contribute_to_class(cls, name) File "C:\\Users\\legal\\venvs\\virtualenvs\\djangoByExample\\Lib\\site-packages\\django\\db\\models\\options.py", line 220, in contribute_to_class raise TypeError( TypeError: 'class Meta' got invalid attribute(s): index_together
원인
Django 5.1 부터 모델 클래스에 사용되는 Meta 클래스의
index_togather 속성이 indexes 로 변경되었다.
그러나 (아마도) 책 작성 당시 django-taggit 의 안정화 버전은 3.0.0 이었고,
django-taggit 은 Django 4 를 기반으로 했을 테니
django-taggit 내부의 Meta 클래스는index_togather 속성이 사용되고 있어
위와 같은 에러가 발생한 것이다.
해결 방법
책과 동일하게 Django 의 버전을 4.x 으로 낮추거나 (시도 x)
django-taggit 의 버전을 5.0.1 이상으로 높이면 에러가 해결된다. (시도 o)
-그러나 앞으로 어떤 새로운 상황이 발생할지 모른다는 단점이…
코멘트
사실 위 내용은 책이 Django 4 를 기반으로 하고 있으므로 버그라 볼 수는 없다.
오히려 Django 5 를 설치한 나의 잘못이다.
하지만 그 덕에 Django 4 와 Django 5 의 차이를 알게 되었으므로
유의미한 경험이라 생각하고 기록을 남긴다.
'Book' 카테고리의 다른 글
[Django][TDD] 클린 코드를 위한 테스트 주도 개발 - 1부 요약 정리 (0) 2025.03.15 읽기 좋은 코드가 좋은 코드다. - 10 상관없는 하위문제 추출하기 (0) 2023.09.23 읽기 좋은 코드가 좋은 코드다. - 09 변수와 가독성 (0) 2023.09.17 [CS][읽는 중]혼자 공부하는 컴퓨터구조 + 운영체제 (0) 2023.08.23 [Django] 배프의 오지랖 파이썬 웹프로그래밍 (0) 2023.08.14