web-dev-qa-db-fra.com

Django 1.7 lance Django.core.exceptions.AppRegistryNotReady: les modèles ne sont pas encore chargés.

Ceci est la traceback sur mon système 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.

Et mon manage.py ressemble à ceci:

import os
import sys
import Django

if __== "__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)

Je reçois cette erreur lorsque j'essaie d'utiliser enregistrement app dans Django 1.7

163
doubleo

C'est ce qui a résolu le problème pour nous et ces gens :

Notre projet a démarré avec Django 1.4, nous sommes passés à 1,5 puis à 1,7. Notre wsgi.py ressemblait à ceci:

import os

from Django.core.handlers.wsgi import WSGIHandler

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

Lorsque j'ai mis à jour le gestionnaire WSGI de style 1.7:

import os

from Django.core.wsgi import get_wsgi_application

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

Tout fonctionne maintenant.

56
Nick Spacek

L'exécution de ces commandes a résolu mon problème (crédit de cette réponse ):

import Django
django.setup()

Cependant, je ne sais pas pourquoi j'ai besoin de ça. Des commentaires seraient appréciés.

232
Nimo

Le problème est dans votre application d'enregistrement. Il semble que Django-registration appelle get_user_module() dans models.py au niveau du module (lorsque les modèles sont encore chargés par le processus d'enregistrement de l'application). Cela ne fonctionnera plus:

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

Je changerais ce fichier de modèles en appelant uniquement get_user_model() à l'intérieur des méthodes (et non au niveau du module) et dans les FK, utilisez quelque chose comme:

user = ForeignKey(settings.AUTH_USER_MODEL)

En passant, l'appel à Django.setup() ne devrait pas être requis dans votre fichier manage.py, il est appelé pour vous dans execute_from_command_line. ( source )

56
gonz

Juste rencontré le même problème. Le problème vient de Django-registration incompatible avec le modèle d'utilisateur Django 1.7.

Une solution simple consiste à changer ces lignes de code, sur votre module Django-registration installé ::

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 

Le mien est à .venv/local/lib/python2.7/site-packages/registration/models.py (virtualenv)

19
hails

Cela fonctionne pour moi pour Django 1.9. Le script Python à exécuter se trouvait à la racine du projet Django.

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

Définissez PROJECT_NAME et APP_NAME sur le vôtre.

14
Lorenzo Lerate

Une autre option est que vous ayez une entrée en double dans INSTALLED_APPS. Cela a jeté cette erreur pour deux applications différentes que j'ai testées. Apparemment, ce n'est pas quelque chose que Django cherche, mais qui est assez stupide pour mettre la même application deux fois dans la liste. Moi, c'est qui.

5
Mark

installez Django-registration-redux == 1.1 à la place de Django-registration, si vous utilisez Django 1.7

2
user2350206

Avez-vous un environnement virtuel Python que vous devez entrer avant de lancer manage.py?

J'ai moi-même rencontré cette erreur, et c'était le problème.

2
Travis

J'ai rencontré ce problème lorsque j'ai utilisé djangocms et ajouté un plugin (dans mon cas: djangocms-cascade). Bien sûr, je devais ajouter le plugin à INSTALLED_APPS. Mais l'ordre est ici important.

Placer 'cmsplugin_cascade' avant 'cms' a résolu le problème.

2
pabo