답변:
Django <1.7에는 앱의 모든 테이블을 삭제하는 데 필요한 SQL을 제공하는 편리한 관리 명령이 있습니다. 자세한 정보는 sqlclear 문서 를 참조하십시오. 기본적으로 실행 ./manage.py sqlclear my_app_name
하면 DB에서 앱의 모든 흔적을 제거하기 위해 실행해야하는 SQL 문을 얻을 수 있습니다. 이러한 명령문을 SQL 클라이언트에 복사하여 붙여 넣어야합니다 (또는 파이프). Django 1.7 이상 에서는 데이터베이스 정리를 자동으로 실행하는 ( migration 문서 ./manage.py migrate my_app_name zero
참조 )를 사용 하십시오 .
프로젝트에서 앱을 제거하려면 INSTALLED_APPS
프로젝트의 settings.py
. Django는 더 이상 앱을로드하지 않습니다.
앱의 파일이 더 이상 사용되지 않도록하려면 프로젝트 디렉터리 또는 PYTHONPATH의 다른 위치에서 앱 디렉터리를 삭제하십시오.
(선택 사항) 앱이 미디어 파일, 캐시 파일 또는 기타 임시 파일을 어딘가에 저장 한 경우 해당 파일도 삭제할 수 있습니다. 또한 앱에서 남을 수있는 느린 세션 데이터에주의하십시오.
(선택 사항) 오래된 콘텐츠 유형도 제거합니다.
그렇게.
from django.contrib.contenttypes.models import ContentType
for c in ContentType.objects.all():
if not c.model_class():
print "deleting %s"%c # print(f"deleting {c}") # for Python 3.6+
c.delete()
./manage.py migrate my_app_name zero
. 그리고 SQL도 자동으로 실행됩니다.
sqlclear
Django 1.9에서 제거 되었으므로이 답변은 이전 버전에만 적합합니다. 참조 : docs.djangoproject.com/en/1.10/releases/1.9/…
include("appname.urls")
프로젝트에서urls.py
settings.py
의INSTALLED_APPS
불필요한 응용 프로그램의 라인__pycache__
하고migrate
프로젝트 models.py
views.py
,admin.py
end 등의 . urls.py
불필요한 앱의python manage.py migrate
하고python manage.py syncdb
django 앱은 * .py 파일의 "세트"이며 django-app-name이있는 디렉토리입니다. 따라서 모든 * .py 파일이있는 전체 폴더를 간단히 삭제할 수 있습니다.
DB에서 테이블을 "제거"하려면 다음을 사용해야합니다. DELETE FROM <app-name_table-names>
또한 루트 디렉터리의 setting.py에서 app-name과 같은 줄을 삭제해야합니다.
이 기사의 단계를 정말 좋아합니다 . 여기에는 마이그레이션 지원 이 포함됩니다 .
두 번의 코드 업데이트로 조정해야 할 수도 있습니다.하지만 많은 배포 (예 : 테스트 단계, 베타 버전 및 프로덕션-제 경우)로 작업해야 할 때 정말 안전 해 보입니다.
제 맥락에서 프로젝트는 여러 번 존재합니다. 저는 개발 시스템이 있고, 일부 팀원에게는 개발 시스템이 있으며, 고객을위한 스테이징 시스템과 프로덕션 시스템이 있습니다. 이것은 손으로 SQL 명령을 실행하고 싶지 않다는 것을 의미합니다. 자동화되기를 바랍니다.
목표 : 앱과 모든 데이터베이스 테이블을 제거합니다.
"migrations"폴더를 제외한 모든 파일을 앱에서 제거합니다.
다음 명령을 실행하십시오. manage.py makemigrations -n drop_all_tables my_app_to_remove
이제 디렉토리는 다음과 같습니다.
my_app_to_remove/
my_app_to_remove/__init__.py
my_app_to_remove/migrations
my_app_to_remove/migrations/0001_initial.py
my_app_to_remove/migrations/....
my_app_to_remove/migrations/0030_drop_all_tables.py
my_app_to_remove/migrations/__init__.py
my_app_to_remove
"settings.py"파일을 그대로 둡니다 .
모든 프로젝트를 업데이트하십시오. 팀 동료에게 프로젝트를 업데이트하고 마이그레이션을 실행하도록 지시하십시오.
이제 settings.py에서 "my_app_to_remove"를 제거하고 다시 배포하십시오.