2016-11-07 20 views
-1

私が参加したチームがDjango 1.4からDjango 1.8に更新しているコードベースの作業を開始しました。この変更に伴い、別々のアプリケーションに再構成され、レイアウトはさまざまな方法で変更されています。標準以外の場所にあるmodels.pyのDjangoアプリ

INSTALLED_APPSは、いくつかのアプリを持っている、のはfoobarが、そのmodels.pyファイルがdbサブディレクトリに置かれてきたが、それはfoo/db/models.pyでそれらを呼びましょう。

これらのモデルは、コード(例:ビュー)からfrom foo.db.models import SomeModelでアクセスすることができ、それはうまくいくようです。

https://docs.djangoproject.com/en/1.8/ref/applications/#initialization-process、特にステージ2では、foo/models.pyではなくfoo/db/models.pyで定義されたモデルは、アプリケーションのロード時に見つかりません。さまざまな問題が発生します。

models.pyという非標準の場所をカスタムAppConfigなどでサポートすることはできますか?

明確にするために、私はmodels.pyを非標準の場所に置くことをお勧めします。私はチームの残りの部分に私の主張をするのを助けるために確認した後です。

答えて

4

modelsサブモジュール名はハードコードされており、初期化プロセスのその段階でDjangoによってインポートされる唯一のモジュールです。

ただし、モデルをmodels.pyファイルに簡単にインポートして、モデルが正しい時刻にインポートされるようにすることができます。すべてのアプリのモデルがfoo.db.modelsに定義またはインポートされている場合は、次のように簡単に使用できます。

# foo/models.py 
from foo.db.models import * 
関連する問題