[Django]Django App 이름 변경
[Django]Django App 이름 변경
장고 앱 이름을 변경할 상황이 발생. 문제는 migrate까지 이미 다 시킨 상태. 단순히 이름 변경으로는 해결이 되지 않는다.
klamer
이라는 앱을klymer
로 변경해보자. (MySQL)
장고는 migrate 실행시 django_migration
과 django_content_type
에 앱 이름이 들어가고 MySQl의 테이블 이름에 앱 이름이 들어간다. 따라서 단순히 폴더나 클래스 이름을 바꾸는 것에 끝나는 것이 아니라 직접 sql문으로 고쳐주어야 한다.
앱 디렉토리 이름 변경
klamer
>klymer
settings.py 의
klamer
를klymer
로 변경
#settings.py
INSTALLED_APPS = [
...
#'klamer',
'klymer',
]
- klymer.apps.py의 app 이름 변경
#class KlamerConfig(AppConfing):
# name = 'klamer'
class KlymerConfig(AppConfig):
name = 'klymer'
- MySQL에 접속
python manage.py dbshell
mysql>
- table 목록을 보면 다음과 같이 나온다. 변경 해주어야하는 거는 저 3개다.
mysql > show tables;
+-------------------+
| Tables_in_... |
+-------------------+
| ... |
|django_content_type|
| django_migrations |
| klamer_input |
+-------------------+
- klamer 앱 table 이름을 바꾸자.
mysql > alter table klamer_input rename to klymer_input
- django content_type 과 django_migrations 내 klamer 이름을 변경하자.
mysql > update django_content_type set app_label='klymer' where app_label='klamer'
mysql > update django_migrations set app='klymer' where app='klamer'
8 . klymer/migrations 폴더 내 모든 파일 삭제 후 migrate
python manage.py makemigrations
python manage.py migrate