Django<;1.7有一个方便的管理命令,它将为您提供必要的SQL来删除应用程序的所有表.有关详细信息,请参阅sqlclear docs.基本上,运行./manage.py sqlclear my_app_name
会让您获得应该执行的SQL语句,以消除数据库中应用程序的所有跟踪.您仍然需要将这些语句复制并粘贴(或通过管道)到您的SQL客户端.对于Django 1.7和更高版本,使用./manage.py migrate my_app_name zero
(参见migrate个文档),它会自动运行数据库清理.
要从项目中删除该应用程序,您只需将其从项目settings.py
的INSTALLED_APPS
中删除即可.Django将不再加载该应用程序.
如果您不想再保留应用程序的文件,请从项目目录或PYTHONPATH上驻留的其他位置删除应用程序目录.
(可选)如果应用程序在某个位置存储了媒体文件、缓存文件或其他临时文件,您可能也要删除这些文件.也要警惕可能是应用程序遗留下来的挥之不go 的会话数据.
(可选)我还会删除所有过时的内容类型.
就像这样.
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()