0

我的 django 项目的结构是:

project
    book (an app)
        __init__.py
        views.py
        models.py
        urls.py
        ...
    api (an app)
        __init__.py
        problem.py
        book (another app for REST API)
            __init__.py
            views.py
            urls.py
            ...

当我尝试在 api/problem.py 中“from book.models import *”时,django 说“ImportError: No module named models”。我认为这是因为它尝试导入不存在的“api/book/models.py”。如何从根文件夹导入模块?谢谢你。

4

3 回答 3

1

我的解决方案是清理项目结构,api.bookbook.api不是这样。

例如,将您的项目结构为:

project
    book (an app)
        views.py
        models.py
        urls.py
        api (another app for REST API)
            views.py
            urls.py
            ...
        ...
    api (an app)
        __init__.py
        problem.py
        ...
于 2012-08-19T06:23:59.680 回答
1

如果你极度绝望,你可以试试这个。

from django.contrib.contenttypes.models import ContentType
model_ct = ContentType.objects.get(app_label="book", model="some_model_you_gonna_import")
target_model = model_ct.model_class()

通过这样做,您可以获得您可能需要的课程。(使用 target_model 作为您要导入的模型)

顺便说一句,我试过这个。应该管用。:p

于 2012-08-19T13:08:43.090 回答
0

您可以尝试相对导入,参考PEP 328

# in api.problem.py
from ..book.models import something

不推荐这种风格,但如果重构包结构和名称很困难,它会有所帮助。

于 2012-08-19T10:18:31.277 回答