2011-06-24 86 views
1

好的 - 我已经与Django合作了几个月,并且遇到了一个奇怪的问题。设置它,这是我的webapp结构。Django导入模型

主Django项目名为cpm。 我在cpm文件夹中有一堆django应用程序。在每个应用程序中,我有我的models.py文件。

现在,当我想创建/使用的模型从其他应用我会做这样的事情:

from cpm.products.models import * 

假设名为products的应用程序存在。最近,我开始出现一些错误,如cannot import XYZ from products。于是,经过一番搜索,我改了行:

from cpm.products.models import * 

from products.models import * 

我只是放弃了cpm.一部分,现在它的工作原理。

有人可以告诉我为什么会发生这种情况吗?它似乎只发生在我的部分应用程序上(我在CPM项目中有一堆)。我希望确保我的语法是准确的,因为我前进。

谢谢!

回答

5

项目的根目录已从python路径的某处移除,或者您从根目录中删除了__init__.py文件。

在一个侧面说明,进口*会导致问题,尤其是当你开始添加大量的应用程序。考虑做from products import models as prod_models。然后做prod_models.MyModel你需要参考你的模型。

+0

有趣。我今晚创建了一个新应用程序(./manage startapp),并注意目录中没有“旧”应用程序目录中存在的文件__init.py__。这是你指的是什么? 感谢您提供模型导入的提示。我一定会改进我的代码。 – Garfonzo