私は機知に富んでいます。何十時間ものトラブルシューティングの後、おそらくそれ以上で、私はついにビジネスを始めたと思ったが、それから次のようになった。
Model class Django.contrib.contenttypes.models.ContentType doesn't declare an explicit app_label
Web上にSO LITTLE情報があり、そこに解決策が何も私の問題を解決していません。どんなアドバイスでも非常に高く評価されるでしょう。
私はPython 3.4とDjango 1.10を使っています。
私のsettings.pyから:
INSTALLED_APPS = [
'DeleteNote.apps.DeletenoteConfig',
'LibrarySync.apps.LibrarysyncConfig',
'Django.contrib.admin',
'Django.contrib.auth',
'Django.contrib.contenttypes',
'Django.contrib.sessions',
'Django.contrib.messages',
'Django.contrib.staticfiles',
]
そして私のapps.pyファイルはこのようになります:
from Django.apps import AppConfig
class DeletenoteConfig(AppConfig):
name = 'DeleteNote'
そして
from Django.apps import AppConfig
class LibrarysyncConfig(AppConfig):
name = 'LibrarySync'
アプリケーション名を設定ファイルに入れていませんか。 myAppNameConfig
は、。manage.py createapp myAppNameコマンドによってapps.pyに生成されるデフォルトクラスです。ここで、myAppNameはアプリケーションの名前です。
settings.py
INSTALLED_APPS = [
'myAppName.apps.myAppNameConfig',
'Django.contrib.admin',
'Django.contrib.auth',
'Django.contrib.contenttypes',
'Django.contrib.sessions',
'Django.contrib.messages',
'Django.contrib.staticfiles',
]
このように、設定ファイルはあなたがあなたのアプリケーションを呼び出したいものを見つけます。次のコードをに追加することで、apps.pyファイルで後で見た目を変えることができます。
myAppName/apps.py
class myAppNameConfig(AppConfig):
name = 'myAppName'
verbose_name = 'A Much Better Name'
私は同じエラーを受け取るし、私はこの問題を解決する方法を知りません。 Djangoのmanage.pyと同じディレクトリにinit.pyがあることに気づくまでに何時間もかかりました。
前:
|-- myproject
|-- __init__.py
|-- manage.py
|-- myproject
|-- ...
|-- app1
|-- models.py
|-- app2
|-- models.py
後:
|-- myproject
|-- manage.py
|-- myproject
|-- ...
|-- app1
|-- models.py
|-- app2
|-- models.py
「明示的なapp_labelを宣言していません」というエラーが表示されるのはよくわかりません。しかし、このinitファイルを削除すると問題が解決しました。
PyCharmでテストを実行したときに私はまったく同じエラーがありました。明示的にDjango_SETTINGS_MODULE
環境変数を設定することでそれを修正しました。 PyCharmを使っているなら、Edit Configurationsボタンを押してEnvironment Variablesを選んでください。
変数をyour_project_name.settings
に設定すると、問題は解決します。
PyCharmは独自のmanage.py
でテストを実行しているため、このエラーが発生したようです。
私は./manage.py Shell
を使ったときにこれを手に入れましたが、誤ってルートプロジェクトレベルのディレクトリからインポートしました
# don't do this
from project.someapp.someModule import something_using_a_model
# do this
from someapp.someModule import something_using_a_model
something_using_a_model()
私は今同じ問題を抱えていました。私はアプリ名に名前空間を追加することで私の問題を解決しました。誰かがこれが参考になることを願っています。
apps.py
from Django.apps import AppConfig
class SalesClientConfig(AppConfig):
name = 'portal.sales_client'
verbose_name = 'Sales Client'
Pythonを使っていて、Djangoのエラーではなくインポートのエラーになっているかもしれません。
違う:
from someModule import someClass
右:
from .someModule import someClass
これは数日前に起こりますが、私は実際にそれを再現することができません...私はDjangoに不慣れな人々だけがこれに出会うかもしれないと思います。
admin.pyにモデルを登録してみてください。
from Django.contrib import admin
from user import User
admin.site.register(User)
サーバーを実行しようとすると、エラーは次のようになります
some lines...
File "/path/to/admin.py" ,line 6
tell you there is an import error
some lines...
Model class Django.contrib.contenttypes.models.ContentType doesn't declare an explicit app_label
user
を.user
に変更し、問題を解決しました
Gitマージのために不正な形式の移行がある単一のアプリに対して移行を生成しようとしたときに、このエラーに遭遇しました。例えば.
manage.py makemigrations myapp
移行を削除して実行しました。
manage.py makemigrations
エラーは発生せず、マイグレーションは正常に生成されました。
私の Django Rest Framework アプリをDRF 3.6.3とDjango 1.11.1にアップグレードしようとしているときにこのエラーが発生しました。
このような状況にある他の人のために、私は自分の解決策を見つけました GitHub号で 、これは DRF設定 のUNAUTHENTICATED_USER
設定を解除することでした:
# webapp/settings.py
...
REST_FRAMEWORK = {
...
'UNAUTHENTICATED_USER': None
...
}
私の場合、私は修正を見つけることができたし、他のみんなのコードを見ても同じ問題になるかもしれません。ファイル。
これが誰かに役立つことを願っています。これが私の最初のコーディングコミュニティへの貢献です
私はこの問題に遭遇し、何が悪かったのかを考え出したところです。それが私に起こったように前の答えが問題を記述しなかったので、私は私が他人のためにそれを掲示するつもりですが:
python migrate.py startapp myApp
を使用し、次にmv myApp myFolderWithApps/
を使用してmyAppを子フォルダに移動することから発生しました。python migrate.py makemigrations
を実行しました。すべてうまくいった。myFolderWithApps.myApp
を使用しなければならなかったためですが、MyApp/apps.pyを更新するのを忘れていました。だから私は私の2番目のアプリでmyApp/apps.py、settings/INSTALLED_APPSと私のインポートパスを修正しました。そのため、長い話を簡単にすると: - 最初の問題は、myAppのapps.py、設定、および2番目のアプリケーションのインポートパスで間違ったアプリケーション名が原因で発生していました。 - しかし、間違ったアプリ名を参照するインポートで移行が作成されていたため、これら3つの場所でパスを修正するだけでは不十分でした。したがって、移行中も同じエラーが発生し続けました(今回の移行からの移行を除く)。
それで…あなたの移行をチェックして、そして頑張ってください!
テストでモデルをインポートする際にこのエラーが発生しました。つまり、Djangoのプロジェクト構造が次のようになっています。
|-- myproject
|-- manage.py
|-- myproject
|-- myapp
|-- models.py # defines model: MyModel
|-- tests
|-- test_models.py
ファイルtest_models.py
にMyModel
をインポートしました。
from models import MyModel
この方法でインポートされた場合、問題は修正されました。
from myapp.models import MyModel
お役に立てれば!
シモンズ:これは少し遅いかもしれませんが、私は自分のコードでこの問題を解決する方法を他の人の答えに見つからないので、私は私の解決策を共有したいと思います。
Djangoのrest_frameworkでAPIをビルドしているときにも、同じようなエラーが出ます。
RuntimeError:Model class apps.core.models.Universityは明示的な> app_labelを宣言せず、INSTALLED_APPSのアプリケーションにはありません。
luke_ausの答えは私のrls.pyを修正することによって私を助けてくれました
から
from project.apps.views import SurgeryView
に
from apps.views import SurgeryView
私の場合、プロジェクトレベルでの相対モジュールパスrls.py、INSTALLED_APPS
およびapps.py
をプロジェクトルートにルートする代わりに使用したため、これが発生していました。つまり、相対モジュールパス+ハックではなく、全体の絶対モジュールパス。
アプリのINSTALLED_APPS
とapps.py
のパスをどれほどいじっても、3つすべてがプロジェクトルートに根ざしているまで、runserver
とpytest
の両方を機能させることはできませんでした。
フォルダー構造:
|-- manage.py
|-- config
|-- settings.py
|-- urls.py
|-- biz_portal
|-- apps
|-- portal
|-- models.py
|-- urls.py
|-- views.py
|-- apps.py
次の場合、manage.py runserver
とgunicornをwsgiで実行し、portal
アプリビューを問題なく使用できましたが、ModuleNotFoundError: No module named 'apps'
が正しく構成されていてもpytestはDjango_SETTINGS_MODULE
でエラーになりました。
config/settings.py:
INSTALLED_APPS = [
...
"apps.portal.apps.PortalConfig",
]
biz_portal/apps/portal/apps.py:
class PortalConfig(AppConfig):
name = 'apps.portal'
config/urls.py:
urlpatterns = [
path('', include('apps.portal.urls')),
...
]
Config/settings.pyのアプリ参照をbiz_portal.apps.portal.apps.PortalConfig
およびPortalConfig.name
からbiz_portal.apps.portal
に変更すると、pytestの実行が許可されました(portal
ビューのテストはまだありません)が、runserver
でエラーが発生しました
RuntimeError:モデルクラスapps.portal.models.Businessは明示的なapp_labelを宣言せず、INSTALLED_APPSのアプリケーションにありません
最後に、apps.portal
を探して、まだ相対パスを使用しているものを確認し、config/urls.pyもbiz_portal.apps.portal.urls
を使用する必要があることを発見しました。
私の場合、Django 1.11.11からDjango 2.2にコードを移植するときにこのエラーが発生しました。カスタムFileSystemStorage派生クラスを定義していました。 Django 1.11.11では、models.pyに次の行がありました。
from Django.core.files.storage import Storage, DefaultStorage
そして後でファイルの中で私はクラス定義を持っていました:
class MyFileStorage(FileSystemStorage):
しかし、Django 2.2ではインポート時にFileSystemStorage
クラスを明示的に参照する必要があります。
from Django.core.files.storage import Storage, DefaultStorage, FileSystemStorage
また、エラーが消えます。
誰もがDjangoサーバによって吐き出されたエラーメッセージの最後の部分を報告していることに注意してください。しかし、上にスクロールすると、そのエラーの真ん中にその理由がわかります。
今日もこのエラーが出ました。メッセージはINSTALLED_APPSの中の私のアプリという特定のアプリを参照しています。しかし実際には、この特定のアプリケーションとは関係ありませんでした。私はこのプロジェクトで使用した新しい仮想環境を使用し、いくつかのライブラリをインストールするのを忘れました。私は追加のライブラリをインストールした後、それは働いた。
PyCharmでこのエラーが発生し、設定ファイルがまったくインポートされていないことに気付きました。これを告げる明白なエラーはありませんでしたが、私がナンセンスなコードをsettings.pyに入れても、エラーにはなりませんでした。
私はsettings.pylocal_settingsフォルダの中にいました。ただし、インポートできるように、同じフォルダに__ init __。pyを含めることをお勧めします。空白を追加すると__ init __。py問題が解決しました。
たぶんあなたは依存インポートを持っています。
私の場合、私は自分のモデルのパラメータとしてシリアライザクラスを使用しましたが、シリアライザクラスはこのモデルを使用していました。serializer_class = AccountSerializer
from ..api.serializers import AccountSerializer
class Account(AbstractBaseUser):
serializer_class = AccountSerializer
...
そして "シリアライザ"ファイルで:
from ..models import Account
class AccountSerializer(serializers.ModelSerializer):
class Meta:
model = Account
fields = (
'id', 'email', 'date_created', 'date_modified',
'firstname', 'lastname', 'password', 'confirm_password')
...
私は自分のファイルの1つで短縮形のfrom .models import *
構文を使用していたので、今日このエラーがありDjangoテストを実行しようとしました。問題は、私がファイル構造を次のようにしていることです。
apps/
myapp/
models/
__init__.py
foo.py
bar.py
models/__init__.py
では、私は簡略構文を使用してモデルをインポートしていました。
from .foo import *
from .bar import *
私のアプリケーションでは、私は以下のようにモデルをインポートしていました:
from myapp.models import Foo, Bar
Django model doesn't declare an explicit app_label
を実行するとき、これは./manage.py test
を引き起こしました。
この問題を解決するために、models/__init__.py
のフルパスから明示的にインポートする必要がありました。
from myapp.models.foo import *
from myapp.models.bar import *
それはエラーの面倒を見ました。
H/t https://medium.com/@michal.bock/fix-weird-exceptions-when-running-Django-tests-f58def71b59a
私は今日このエラーに遭遇し、グーグル後にここで終わりました。既存の答えのどれも私の状況に関連しているようには見えません。私がしなければならなかった唯一のことは私の__init__.py
ファイルからモデルをアプリのトップレベルにインポートすることでした。モデルを使用してインポートを関数に移動する必要がありました。
Djangoは奇妙なコードをいくつか持っているようです。
環境変数から取得するためにSECRET_KEY
を移動し、アプリケーションの実行時に設定を忘れたため、このエラーが発生しました。 settings.py
にこのようなものがある場合
SECRET_KEY = os.getenv('SECRET_KEY')
その後、実際に環境変数を設定していることを確認してください。