python - template - Django 1.7 lanza django.core.exceptions.AppRegistryNotReady: los modelos aún no están cargados
href django (10)
Este es el rastreo en mi sistema de 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.
Y mi manage.py se ve así:
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)
Recibo este error cuando intento utilizar la aplicación de registration en Django 1.7
¿Tiene un entorno virtual de Python que debe ingresar antes de ejecutar manage.py?
Me encontré con este error yo mismo, y ese era el problema.
Acabo de encontrar el mismo problema. El problema se debe a django-registration
incompatible con el modelo de usuario django 1.7.
Una solución simple es cambiar estas líneas de código en su módulo 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
a::
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
El mío está en .venv/local/lib/python2.7/site-packages/registration/models.py
(virtualenv)
Ejecutar estos comandos resolvió mi problema (crédito a esta respuesta ):
import django
django.setup()
Sin embargo, no estoy seguro de por qué necesito esto. Los comentarios serán apreciados.
El problema está en su aplicación de registro. Parece que django-registration llama a get_user_module()
en models.py
a nivel de módulo (cuando el proceso de registro de la aplicación aún está cargando modelos). Esto ya no funcionará:
try:
from django.contrib.auth import get_user_model
User = get_user_model()
except ImportError:
from django.contrib.auth.models import User
Cambiaría este archivo de modelos para que solo llame a get_user_model()
dentro de los métodos (y no a nivel de módulo) y en FK use algo como:
user = ForeignKey(settings.AUTH_USER_MODEL)
Por cierto, la llamada a django.setup()
no debería ser requerida en su archivo manage.py
, se le llama en execute_from_command_line
. ( source )
Esto es lo que lo resolvió para nosotros y estas personas :
Nuestro proyecto comenzó con Django 1.4, pasamos a 1.5 y luego a 1.7. Nuestro wsgi.py se veía así:
import os
from django.core.handlers.wsgi import WSGIHandler
os.environ[''DJANGO_SETTINGS_MODULE''] = ''myapp.settings''
application = WSGIHandler()
Cuando actualicé al manejador WSGI 1.7 estilo:
import os
from django.core.wsgi import get_wsgi_application
os.environ[''DJANGO_SETTINGS_MODULE''] = ''myapp.settings''
application = get_wsgi_application()
Todo funciona ahora
Esto funciona para mí para Django 1.9. El script de Python para ejecutar estaba en la raíz del proyecto Django.
import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "PROJECT_NAME.settings")
django.setup()
from APP_NAME.models import *
Establece PROJECT_NAME y APP_NAME en la tuya
Me encontré con este problema cuando uso djangocms y agregué un complemento (en mi caso: djangocms-cascade). Por supuesto, tuve que agregar el complemento a INSTALLED_APPS. Pero el orden es aquí importante.
Colocar ''cmsplugin_cascade'' antes de ''cms'' resuelve el problema.
Otra opción es que tenga una entrada duplicada en INSTALLED_APPS. Eso arrojó este error para dos aplicaciones diferentes que probé. Aparentemente, no es algo que Django verifique, pero quién es tan tonto como para poner la misma aplicación en la lista dos veces. Yo, eso es quién.
Su manage.py
es "incorrecto"; No sé de dónde lo manage.py
, pero eso no es un 1.7 manage.py
- ¿ manage.py
usando alguna versión pre-lanzamiento funky o algo así?
Restablezca su manage.py
a lo convencional, como se muestra a continuación, y las cosas deberían 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)
instale django-registration-redux == 1.1 en vez django-registration, si usa django 1.7