[python] Django 1.7에서 django.core.exceptions.AppRegistryNotReady가 발생 함 : 모델이 아직로드되지 않았습니다

이것은 내 Windows 시스템의 역 추적입니다.

Traceback (most recent call last):
  File "D:\AMD\workspace\steelrumors\manage.py", line 9, in <module>
    django.setup()
  File "D:\AMD\Django\django-django-4c85a0d\django\__init__.py", line 21, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "D:\AMD\Django\django-django-4c85a0d\django\apps\registry.py", line 108, in populate
    app_config.import_models(all_models)
  File "D:\AMD\Django\django-django-4c85a0d\django\apps\config.py", line 197, in import_models
    self.models_module = import_module(models_module_name)
  File "C:\Python27\lib\importlib\__init__.py", line 37, in import_module
    __import__(name)
  File "C:\Python27\lib\site-packages\registration\models.py", line 15, in <module>
    User = get_user_model()
  File "D:\AMD\Django\django-django-4c85a0d\django\contrib\auth\__init__.py", line 135, in get_user_model
    return django_apps.get_model(settings.AUTH_USER_MODEL)
  File "D:\AMD\Django\django-django-4c85a0d\django\apps\registry.py", line 199, in get_model
    self.check_models_ready()
  File "D:\AMD\Django\django-django-4c85a0d\django\apps\registry.py", line 131, in check_models_ready
    raise AppRegistryNotReady("Models aren't loaded yet.")
django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.

그리고 내 manage.py는 다음과 같습니다.

import os
import sys
import django

if __name__ == "__main__":

    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "steelrumors.settings")
    django.setup()
    from django.core.management import execute_from_command_line

    execute_from_command_line(sys.argv)

Django 1.7에서 등록 앱 을 사용하려고 할 때이 오류가 발생합니다



답변

이것이 우리 와이 사람들을 위해 그것을 해결 한 것입니다 .

우리 프로젝트는 Django 1.4로 시작하여 1.5로, 1.7로갔습니다. 우리 wsgi.py는 다음과 같았습니다 :

import os

from django.core.handlers.wsgi import WSGIHandler

os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings'
application = WSGIHandler()

1.7 스타일 WSGI 핸들러로 업데이트했을 때 :

import os

from django.core.wsgi import get_wsgi_application

os.environ['DJANGO_SETTINGS_MODULE'] = 'myapp.settings'
application = get_wsgi_application()

모든 것이 지금 작동합니다.


답변

이 명령을 실행하면 내 문제가 해결되었습니다 ( 이 답변에 대한 신용 ) :

import django
django.setup()

그러나 왜 이것이 필요한지 잘 모르겠습니다. 의견을 부탁드립니다.


답변

문제는 등록 앱에 있습니다. 장고 등록 이 모듈 수준에서 호출 get_user_module()되는 것 같습니다 models.py(응용 프로그램 등록 프로세스에서 모델을 계속로드하는 경우). 더 이상 작동하지 않습니다.

try:
    from django.contrib.auth import get_user_model
    User = get_user_model()
except ImportError:
    from django.contrib.auth.models import User    

나는이 모델 파일을 get_user_model()메소드 내부 에서만 호출 하고 모듈 레벨 에서는 호출 하지 않도록 변경했으며 FK에서는 다음과 같은 것을 사용합니다.

user = ForeignKey(settings.AUTH_USER_MODEL)

BTW, 파일에 대한 호출이 django.setup()필요하지 않습니다 . manage.py에서 호출됩니다 execute_from_command_line. ( 소스 )


답변

같은 문제가 발생했습니다. 문제는 django-registrationdjango 1.7 사용자 모델과 호환되지 않기 때문입니다 .

간단한 수정 방법은 설치된 django-registration모듈 에서 다음 코드 줄을 변경하는 것입니다.

try:
    from django.contrib.auth import get_user_model
    User = get_user_model()
except ImportError:
    from django.contrib.auth.models import User  

에::

from django.conf import settings
try:
    from django.contrib.auth import get_user_model
    User = settings.AUTH_USER_MODEL
except ImportError:
    from django.contrib.auth.models import User 

광산은 .venv/local/lib/python2.7/site-packages/registration/models.py(virtualenv)


답변

이것은 Django 1.9에서 나에게 효과적입니다. 실행할 Python 스크립트는 Django 프로젝트의 루트에있었습니다.

    import django
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "PROJECT_NAME.settings")
    django.setup()
    from APP_NAME.models import *

PROJECT_NAME 및 APP_NAME을 (를) 귀하의 것으로 설정


답변

또 다른 옵션은 INSTALLED_APPS에 중복 항목이 있다는 것입니다. 그것은 내가 테스트 한 두 개의 다른 앱에 대해이 오류를 던졌습니다. 분명히 장고가 확인하는 것이 아니라 동일한 앱을 목록에 두 번 넣을 정도로 바보 같은 사람입니다. 나 그 사람이야


답변

manage.py를 실행하기 전에 입력해야하는 Python 가상 환경이 있습니까?

나는이 오류에 직접 부딪쳤다. 그리고 그것은 문제였다.