python variable Django 1.7 lança django.core.exceptions.AppRegistryNotReady: Modelos ainda não foram carregados



templates django examples (8)

Seu manage.py está "errado"; Eu não sei de onde você tirou isso, mas isso não é um 1.7 manage.py - você estava usando algum build de pré-lançamento ou algo assim?

Redefinir seu manage.py para o convencional, como abaixo, e as coisas devem apenas funcionar:

#!/usr/bin/env python
import os
import sys

if __name__ == "__main__":
    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "{{ project_name }}.settings")

    from django.core.management import execute_from_command_line

    execute_from_command_line(sys.argv)

Este é o traceback no meu sistema 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.

E meu manage.py é assim:

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)

Eu recebo este erro quando estou tentando usar registration aplicativo de registration no Django 1.7


Eu corri para este problema quando eu uso djangocms e adicionei um plugin (no meu caso: djangocms-cascade). Claro que tive que adicionar o plugin ao INSTALLED_APPS. Mas a ordem é importante aqui.

Para colocar 'cmsplugin_cascade' antes de 'cms' resolveu o problema.


A execução desses comandos resolveu meu problema (crédito para esta resposta ):

import django
django.setup()

No entanto, não sei por que preciso disso. Comentários seriam apreciados.


Foi isso que resolveu para nós e para essas pessoas :

Nosso projeto começou com o Django 1.4, fomos para 1.5 e depois para 1.7. Nosso wsgi.py foi com este:

import os

from django.core.handlers.wsgi import WSGIHandler

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

Quando atualizei para o manipulador WSGI de estilo 1.7:

import os

from django.core.wsgi import get_wsgi_application

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

Tudo funciona agora.


O problema está no seu aplicativo de registro. Parece que o django-registration chama get_user_module() no models.py em um nível de módulo (quando os modelos ainda estão sendo carregados pelo processo de registro do aplicativo). Isso não funcionará mais:

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

Eu get_user_model() esse arquivo de modelos para chamar apenas get_user_model() dentro de métodos (e não no nível de módulo) e em FKs use algo como:

user = ForeignKey(settings.AUTH_USER_MODEL)

BTW, a chamada para django.setup() não deve ser requerida em seu arquivo manage.py , é chamada para você em execute_from_command_line . ( source )


Outra opção é que você tenha uma entrada duplicada em INSTALLED_APPS. Que jogou esse erro para dois aplicativos diferentes que testei. Aparentemente não é algo que o Django procura, mas quem é bobo o suficiente para colocar o mesmo aplicativo na lista duas vezes. Eu sou quem.


instale o django-registration-redux == 1.1 em vez do django-registration, se você estiver usando o django 1.7


Acabei de encontrar o mesmo problema. O problema é que o django-registration incompatível com o modelo de usuário do django 1.7.

Uma correção simples é alterar estas linhas de código, no seu módulo de django-registration instalado:

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

para::

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 

O meu está em .venv/local/lib/python2.7/site-packages/registration/models.py (virtualenv)