我今天的第二个不太熟练的问题:我有一个安装了四个应用程序的 django 项目。当我运行 manage.py syndb 时,它只为其中两个创建表。据我所知,我的任何模型文件都没有问题,所有应用程序都在我的设置文件中的 INSTALLED_APPS 中指定。 Manage.py syndb 似乎忽略了我的两个应用程序。
这两个“被忽略的”应用程序的一个独特之处在于模型文件从其他两个应用程序导入模型并将它们用作外键(不知道这是好还是坏的做法,但有助于我留下来组织)。不过我不认为这是问题所在,因为我注释掉了具有外键的模型并且仍然没有创建表。我很难过。
更新:当我注释掉从其他应用程序导入模型文件的行时,syndb 会创建我的表。也许我不了解不同应用程序中的模型文件如何与其他应用程序相关联。我虽然可以通过简单地导入它来使用来自另一个应用程序的模型作为外键。不对?
最佳答案
我想我遇到过类似的事情。
我遇到了一个模型没有被重置的问题。 在这种情况下,事实证明我的模型中存在一个没有被吐出的错误。
虽然我认为 syncdb 在运行时会吐出某种错误。
无论如何,请尝试从 shell 导入模型文件,看看是否可以。
$ manage.py shell
>>> from myapp import models
>>>
如果文件中有错误,应该指出。
根据您的更新,听起来您可能遇到了交叉导入问题。 而不是:
from app1.models import X
class ModelA(models.Model):
fk = models.ForeignKey(X)
尝试:
class ModelA(models.Model):
fk = models.ForeignKey("app1.X")
...虽然我认为您应该在 syncdb 上得到一个错误。
关于python - manage.py syncdb 不为某些模型添加表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1435523/