Django 不更新 settings.py 中的 INSTALLED_APPS 变更

2 投票
2 回答
2737 浏览
提问于 2025-04-15 11:47

我正在尝试让 South 这个工具正常工作——在我的电脑上它运行得很好,但我在我的网络主机上部署时遇到了困难。

现在看来,我对 INSTALLED_APPS 进行的任何添加或删除操作都没有被 syncdbdiffsettings 识别到。我已经把 south 加入到我的 INSTALLED_APPS 列表中,但当我运行 syncdb 时,它需要的表格并没有被创建。如果我更改其他设置,它们会被识别到,似乎只有 INSTALLED_APPS 这个部分不工作。

如果我在通过 manage.py shell 进入的命令行中运行

from south.db import db

我没有收到任何导入错误,所以我觉得问题不在于 south 的位置。我尝试过删除所有其他应用(除了 Django 自带的那些),但当我运行 syncdb 时,它们的表格仍然会被创建。

即使我完全删除 INSTALLED_APPS,当我运行 manage.py diffsettings 时,仍然会显示旧的 INSTALLED_APPS 列表。

你觉得我哪里做错了?

谢谢,

Dom

2 个回答

3

如果你为一个应用写了迁移文件,syncdb 就不能用了。

manage.py migrate

对于那些使用 South 进行迁移的应用,syncdb 是无法工作的。只有根据 South 的迁移历史,才能注意到这些应用的模型变化。

South 迁移文档

2

结果发现,我真是个傻瓜。我做了这样的事情:

settings.py 文件里:

...
INSTALLED_APPS = (
    ...
)
...

from localsettings import *

localsettings.py 文件里:

...
INSTALLED_APPS = (
    ...
)
...

我是从 settings.py 创建了 localsettings.py,这个文件只包含与当前项目位置相关的内容(比如数据库设置),但我忘记删除 INSTALLED_APPS 这一部分了。

为我做了这么明显的傻事而道歉。

撰写回答