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: モデルという名前のモジュールがありません" と言いました。存在しない「api/book/models.py」をインポートしようとするためだと思います。ルート フォルダからモジュールをインポートするにはどうすればよいですか? ありがとうございました。

4

3 に答える 3

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 に答える
1

api.book私の解決策は、book.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 に答える
0

相対インポートを試すことができます、refs PEP 328

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

このスタイルはお勧めしませんが、パッケージの構造と名前のリファクタリングが難しい場合に役立ちます。

于 2012-08-19T10:18:31.277 に答える