2017-10-17 11 views
0

私はいくつかのrest_framework関連のアプリケーションでdjango 1.11プロジェクトを持っています。新しいアプリのテストを書く、私は突然問題Django Djangoモデルは、プロジェクトのinit.pyファイルのために明示的なapp_labelを宣言していません

'RuntimeError: Model class core.myApp.models.query_record 
doesn't declare an explicit app_label and isn't in an 
application in INSTALLED_APPS' 
を得ている

私は、これはINSTALLED_APPSに記載されて持っている、と私はトップで__init.py__ファイルを持っているので、最後に、私はこの問題を持っている理由は、関連するセロリのタスクのいくつかの設定をロードするプロジェクトのレベル。

私は他のアプリのテストでこの問題を見たことがない理由は分かりません。特にこのアプリやそのモデルについては特別なことはありません。しかし、これは、このアプリケーションのすべてのテストが失敗する原因です。

私の質問は、これらの単体テストを実行し、プロジェクトのトップレベルの__init.py__を無視する方法があるかどうかです。あるいは、私は尋ねるべきではない、それを行うための非ハックな方法はありますか?

プロジェクトレベルの__init.py__:

from __future__ import absolute_import 
from .celeryapp import app as celery_app 

他のすべてのアプリinit.pyファイルは空です。

+0

アプリの__init__.pyに各アプリのデフォルト設定を含めますか? –

+0

'__init __。py'にコードを表示してください。 –

+0

@DanielRoseman質問を更新しました。しかし、他のチームメンバーと話すことで、これは私の環境に固有のようです。これは新鮮なバゲントとレポのクローンであるので奇妙です。問題を特定するまでこの質問を開いたままにしておきます。誤っている場合は更新するか削除します。 – rob

答えて

0

詳細については、Djangoのドキュメントを参照してください。インポートの問題が発生します。私はこれをしておくべきだった:

./manage.py test myApp --pattern=prefix_*.py 

D'oh。

0

問題は.celeryappがまだロードされていないいくつかのモデルをインポートしようとしていること、であるかもしれません。

あなたは/ core.myAppと負荷にのAppConfigを追加することがready()方法だであなたのセロリアプリをインポートしようとすることができます。それは、判明最後に、これは単にので、どのように私は実行していたテスト

純粋なワイルドカードだったこの

./manage.py test myApp --pattern=*.py 

よう

私が実行していたテストであったDjango docs for more information

関連する問題