framework - RuntimeError: Modelo de clase django.contrib.sites.models.Site no declara una app_label explícita y no está en una aplicación en INSTALLED_APPS
django-rest-framework-social-oauth2 (3)
Aterricé en esta publicación a través de búsqueda de Google. Mi problema era ejecutar pruebas que explotaron con el error:
RuntimeError: Model class app.taxonomy.models.Term doesn''t declare an explicit app_label and isn''t in an application in INSTALLED_APPS.
Esto se estaba ejecutando en Python 2.7.x con importaciones absolutas. Como lo mencionó Colton Hicks en los comentarios a continuación, esto también puede ocurrir con Python 3 (pytest 3.2.3 con Django 1.11.4).
En mi tests.py
:
from __future__ import absolute_import
[...]
from .models import Demographics, Term
Después de cambiar la importación relativa a una importación absoluta, el problema desapareció:
from taxonomy.models import Demographics, Term
HTH
Estoy creando una aplicación con Django Rest Framework y AngularJs. Estoy usando Django-rest-auth para mis propósitos de autenticación, aunque no he podido configurarlo. De todos modos, estoy tratando de configurar esta app con mi proyecto. Me di cuenta de que necesito instalar django-rest-auth-registration para que funcione, así que seguí esta documentation para hacer lo siguiente:
Ejecuté los comandos
pip instalar django-rest-auth
y
pip instalar django-allauth
Cualquiera de mis settings.py se ve así:
INSTALLED_APPS = [
''django.contrib.admin'',
''django.contrib.auth'',
''django.contrib.contenttypes'',
''django.contrib.sessions'',
''django.contrib.messages'',
''django.contrib.staticfiles'',
# 3rd party apps
''rest_framework'',
''rest_framework.authtoken'',
''rest_auth'',
''allauth'',
''allauth.account'',
''rest_auth.registration'',
# My app
''myapp'',
]
También agregué los backends de autenticación, procesadores_texto y las URL correctas.
Sin embargo, cuando intento migrar, mi terminal arroja el siguiente error:
RuntimeError: clase de modelo django.contrib.sites.models.Site no declara una app_label explícita y no está en una aplicación en INSTALLED_APPS.
¿Por qué recibo este error y cómo lo soluciono para migrar mi proyecto? ¡Gracias!
Recibí el error anterior. Sin embargo, mi problema fue el de urls.py. Estaba siguiendo la receta de django de cocineros PyDanny. Mi error fue poner en urls.py esta línea:
url(r''^demo/'', include(''project.demoapp.urls'', namespace=''demoapp'')),
cuando corregí a esto:
url(r''^demo/'', include(''demoapp.urls'', namespace=''demoapp'')),
todo estuvo bien. También cambié mis aplicaciones locales (hice esto primero y el error crítico fue la mala configuración de la URL):
LOCAL_APPS = [
# Your stuff: custom apps go here
''demoapp.apps.DemoAppConfig'',
]
La solución
Simplemente agregue el marco de Sitios de Django a sus aplicaciones y establezca SITE_ID en 1 en su configuración.
INSTALLED_APPS = [
...
''django.contrib.sites'',
]
SITE_ID = 1
¿Por qué pasó esto?
El Framework de Sitios de Django es un módulo aportado junto con la biblioteca central que permite el uso de una única aplicación / base de código de Django con diferentes sitios (que pueden usar diferentes bases de datos, lógica en vistas, etc.). La configuración de SITE_ID , como se indica en los documentos, " se usa para que los datos de la aplicación se conecten a sitios específicos y una sola base de datos puede administrar el contenido de varios sitios ".
En este caso particular, AllAuth requiere el Framework de Sites para funcionar correctamente. Muchas otras bibliotecas de terceros están diseñadas para manejar con seguridad los casos en los que pueden estar presentes múltiples sitios y, como tal, pueden ser los mejores.