[python] Django 모델 “명시적인 app_label을 선언하지 않음”

나는 재치의 끝이다. 수십 시간의 문제 해결을 마치고 아마 더 많은 시간을 들여 마침내 사업에 들어갔다고 생각했지만 다음과 같은 결과를 얻었습니다.

Model class django.contrib.contenttypes.models.ContentType doesn't declare an explicit app_label 

웹에 이것에 대한 정보가 너무 적으며 해결책이 내 문제를 해결하지 못했습니다. 어떤 조언이라도 대단히 감사하겠습니다.

저는 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에 의해 apps.py에서 생성 된 기본 클래스입니다 .manage.py createapp의 myAppName의 명령. 여기서 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을 선언하지 않음”오류가 발생하는 것은 매우 혼란 스럽습니다. 그러나이 초기화 파일을 삭제하면 내 문제가 해결되었습니다.


답변

PyCharm으로 테스트를 실행할 때 똑같은 오류가 발생했습니다. DJANGO_SETTINGS_MODULE환경 변수 를 명시 적으로 설정하여 수정했습니다 . PyCharm을 사용하는 경우 구성 편집 버튼을 누르고 환경 변수를 선택하십시오 .

변수를로 설정하면 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()


답변

Python3을 사용하는 멍청한 사람으로서 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, 문제가 해결


답변

나는 지금 바로 같은 문제가 있었다. 앱 이름에 네임 스페이스를 추가하여 내 문제를 해결했습니다. 누군가가 도움이되기를 바랍니다.

apps.py

from django.apps import AppConfig

class SalesClientConfig(AppConfig):
        name = 'portal.sales_client'
        verbose_name = 'Sales Client'


답변

테스트에서 모델을 가져올 때이 오류가 발생했습니다. 즉이 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

도움이 되었기를 바랍니다!

추신 : 아마도 이것은 조금 늦었을 수도 있지만 다른 사람들은 내 코드 에서이 문제를 해결하는 방법에 대한 답변을 찾지 못했고 솔루션을 공유하고 싶습니다.