【发布时间】:2012-07-08 02:59:11
【问题描述】:
最初,我在 Django 的一个项目中制作了 2 个应用程序(app_a 和 app_b)。现在我想删除一个(比如 app_a)。我该怎么做?从设置文件中的INSTALLED_APPS 中删除应用名称是否足够?
【问题讨论】:
最初,我在 Django 的一个项目中制作了 2 个应用程序(app_a 和 app_b)。现在我想删除一个(比如 app_a)。我该怎么做?从设置文件中的INSTALLED_APPS 中删除应用名称是否足够?
【问题讨论】:
您需要删除或检查以下内容:
INSTALLED_APPS 中删除该应用。app_name_model_name)。your_app/context_processors.py 中的上下文处理器,如果它有这样的文件)。如果您一直遵循正确的编码原则(即,每个 Django 应用程序都是 Web 应用程序的独立部分),那么上述大多数情况都不会发生。但是当其他应用确实使用了该应用的某些部分时,您需要先检查一下,因为它可能需要在删除应用之前进行重构。
【讨论】:
这取决于应用程序(安装方式、使用方式等),但通常您可以从 INSTALLED_APPS 中删除应用程序,然后删除其在数据库中的表。
【讨论】:
如果在 Simeon Visser 解释的操作和 cmets 中 Elias Dorneles 引用的其他答案之后,在运行服务器后您会得到类似的结果:
System check identified 1 issue (0 silenced).
Exception in thread django-main-thread:
Traceback (most recent call last):
File "C:\python\releases\381_x64\lib\threading.py", line 932, in _bootstrap_inner
[...]
File "c:\python\env\django3python381\lib\site-packages\django\db\migrations\graph.py", line 58, in raise_error
raise NodeNotFoundError(self.error_message, self.key, origin=self.origin)
django.db.migrations.exceptions.NodeNotFoundError: Migration oeuvres.0001_initial dependencies reference nonexistent parent node ('medias', '0001_initial')
浏览到您的 appname.migrations 文件夹并注释对您要删除的应用程序的任何引用。在上述情况下,oeuvres 应用程序依赖于 medias 应用程序,我想删除它,在 oeuvres.0001_initial 迁移中定义文件。
我不认为/不知道这是否会对迁移过程产生影响,但我打算重置所有迁移内容以进行生产,然后导入数据,即如下所述: https://simpleisbetterthancomplex.com/tutorial/2016/07/26/how-to-reset-migrations.html
【讨论】: