warning traduccion releases quitar mostrar examples eliminar python django deprecation-warning

python - traduccion - Advertencias de desaprobación de Django 1.9 app_label



warnings examples (12)

Acabo de actualizar a Django v1.8, y estoy probando mi configuración local antes de actualizar mi proyecto y he recibido una advertencia de desaprobación que nunca había visto antes, y tampoco tiene ningún sentido para mí. Puedo estar pasando por alto algo o malinterpretando la documentación.

/Users/neilhickman/Sites/guild/ankylosguild/apps/raiding/models.py:6: RemovedInDjango19Warning: Model class ankylosguild.apps.raiding.models.Difficulty doesn''t declare an explicit app_label and either isn''t in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9. class Difficulty(models.Model): /Users/neilhickman/Sites/guild/ankylosguild/apps/raiding/models.py:21: RemovedInDjango19Warning: Model class ankylosguild.apps.raiding.models.Zone doesn''t declare an explicit app_label and either isn''t in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9. class Zone(models.Model): /Users/neilhickman/Sites/guild/ankylosguild/apps/raiding/models.py:49: RemovedInDjango19Warning: Model class ankylosguild.apps.raiding.models.Boss doesn''t declare an explicit app_label and either isn''t in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9. class Boss(models.Model): /Users/neilhickman/Sites/guild/ankylosguild/apps/raiding/models.py:79: RemovedInDjango19Warning: Model class ankylosguild.apps.raiding.models.Item doesn''t declare an explicit app_label and either isn''t in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9. class Item(models.Model): /Users/neilhickman/Sites/guild/ankylosguild/apps/forum/models.py:14: RemovedInDjango19Warning: Model class ankylosguild.apps.forum.models.Category doesn''t declare an explicit app_label and either isn''t in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9. class Category(models.Model): /Users/neilhickman/Sites/guild/ankylosguild/apps/forum/models.py:36: RemovedInDjango19Warning: Model class ankylosguild.apps.forum.models.Comment doesn''t declare an explicit app_label and either isn''t in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9. class Comment(ScoreMixin, ProfileMixin, models.Model): /Users/neilhickman/Sites/guild/ankylosguild/apps/forum/models.py:64: RemovedInDjango19Warning: Model class ankylosguild.apps.forum.models.Forum doesn''t declare an explicit app_label and either isn''t in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9. class Forum(models.Model): /Users/neilhickman/Sites/guild/ankylosguild/apps/forum/models.py:88: RemovedInDjango19Warning: Model class ankylosguild.apps.forum.models.Post doesn''t declare an explicit app_label and either isn''t in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9. class Post(ScoreMixin, ProfileMixin, models.Model): /Users/neilhickman/Sites/guild/ankylosguild/apps/forum/models.py:119: RemovedInDjango19Warning: Model class ankylosguild.apps.forum.models.CommentPoint doesn''t declare an explicit app_label and either isn''t in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9. class CommentPoint(models.Model): /Users/neilhickman/Sites/guild/ankylosguild/apps/forum/models.py:127: RemovedInDjango19Warning: Model class ankylosguild.apps.forum.models.TopicPoint doesn''t declare an explicit app_label and either isn''t in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9. class TopicPoint(models.Model): /Users/neilhickman/Sites/guild/ankylosguild/apps/auctionhouse/models.py:10: RemovedInDjango19Warning: Model class ankylosguild.apps.auctionhouse.models.Auction doesn''t declare an explicit app_label and either isn''t in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9. class Auction(models.Model): /Users/neilhickman/Sites/guild/ankylosguild/apps/auctionhouse/models.py:83: RemovedInDjango19Warning: Model class ankylosguild.apps.auctionhouse.models.Bid doesn''t declare an explicit app_label and either isn''t in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9. class Bid(models.Model):

Ahora esto plantea 3 preguntas para mí.

  1. De acuerdo con la documentation , Options.app_label no es un requisito a menos que el modelo esté fuera del módulo de la aplicación, que en mi caso no lo es. En segundo lugar, este comportamiento fue desaprobado en 1.7 de todos modos, entonces, ¿por qué es incluso un problema?
  2. Todas las aplicaciones están en la tupla INSTALLED_APPS, ¿entonces seguramente no puede ser eso?
  3. ¿Por qué las aplicaciones no se cargarán antes de que se llamen si todo está en la tupla INSTALLED_APPS?

Si realmente estoy haciendo algo mal, ¿cuál es la forma correcta de hacerlo ya que los documentos realmente no aclaran qué está causando este problema o cómo rectificarlo?


A veces, un archivo .pyc no válido que no coincide con el código fuente actual causó este problema.

Eliminé todos los .pyc para actualizarlos todos usando esta bash

find . -name "*.pyc" -exec rm -rf {} /;



Como se indica en la advertencia, esto sucede:

  • Cuando usa un modelo que no está en un INSTALLED_APPS ;
  • O cuando está utilizando un modelo antes de que se cargue su aplicación.

Dado que refirió la aplicación en la configuración INSTALLED_APPS , es muy probable que esté utilizando un modelo antes de la inicialización de la aplicación.

Por lo general, esto ocurre cuando from .models import SomeModels en una señal temprana de apps.py (por ejemplo, post_migrate ). En lugar de referir sus modelos de la manera clásica aquí, se recomienda usar AppConfig.get_model() . Verifique su archivo apps.py para cualquier importación de modelo y reemplácelos con esta API.

Por ejemplo en lugar de:

# apps.py from django.apps import AppConfig from .models import MyModel def do_stuff(sender, **kwargs): MyModel.objects.get() # etc... class MyAppConfig(AppConfig): name = ''src.my_app_label'' def ready(self): post_migrate.connect(do_stuff, sender=self)

Hacer esto :

# apps.py from django.apps import AppConfig def do_stuff(sender, **kwargs): mymodel = sender.get_model(''MyModel'') mymodel.objects.get() # etc... class MyAppConfig(AppConfig): name = ''src.my_app_label'' def ready(self): post_migrate.connect(do_stuff, sender=self)

Tenga en cuenta que esta aplicación se introdujo en el error #21719 .


Error similar En mi caso el error fue:

RemovedInDjango19Warning: Model class django.contrib.sites.models.Site doesn''t declare an explicit app_label and either isn''t in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9. class Site(models.Model):

Mi solución fue:

Se agregó ''django.contrib.sites'' a INSTALLED_APPS


La forma Django 1.9 de manejar esto y darle un buen nombre a su aplicación en el administrador es hacer lo siguiente:

Agregue un archivo en su aplicación llamado apps.py y agregue lo siguiente:

#apps.py from django.apps import AppConfig class YourAppNameAppConfig(AppConfig): name = ''yourappname'' verbose_name = ''Your App Name Looking Right''

Luego, en el archivo __init__.py su aplicación, agregue lo siguiente:

#__init__.py default_app_config = ''youappname.apps.YourAppNameAppConfig''


La forma más fácil y sencilla de resolver esto es colocar el comando "importar señales" en la PARTE INFERIOR del archivo de Modelo con el que está trabajando. Esto garantiza que todos los modelos se carguen antes de importar las señales para ese modelo. Tendría que hacer esto para cada modelo que está importando (si usa receptores vinculados a modelos particulares), o en el models.py para la aplicación que viene al final de las "aplicaciones instaladas" en su configuración.

Las otras soluciones solo son necesarias si se trata de señales de tipo no modelo, donde los modelos nunca se importarán primero.

Por qué esto no se nota en los documentos es un misterio, porque me atrapó, hasta que recordé que tienes que hacer eso.

modelos.py

from django.db import models class MyModel(models.Model): myfield1 = models.CharField() myfield2 = models.CharField() import signals

Y luego en signal.py:

from django.db.models.signals import pre_save # Or whatever you are using from django.dispatch import receiver from .models import MyModel @receiver(pre_save, sender=MyModel) def my_receiver(sender, instance, **kwargs): mysender = sender print mysender

Como eso.


No recibí ningún error en django 1.7. Mientras migraba a django 1.8, recibí este error. La razón fue que la señal se definió en app/signal_receiver.py .

Creé un apps.py

from django.apps import AppConfig class TasksConfig(AppConfig): name = ''core'' verbose_name = "core" def ready(self): import core.signal.handler

handler.py receptor de señal en handler.py dentro del paquete de señal.


Recibía un error similar, pero en lugar de quejarme de modelos en mis aplicaciones, se quejaba de modelos en paquetes contrib . Por ejemplo:

C: / Archivos de programa / Python 2.7 / lib / site-packages / django / contrib / sessions / models.py: 27: RemovedInDjango19Warning: Clase de modelo django.contrib.sessions.models.Session no declara una etiqueta_aplicación explícita y tampoco es t en una aplicación en INSTALLED_APPS o si no se importó antes de que se cargara su aplicación. Esto ya no será compatible con Django 1.9. Clase Sesión (modelos.Modelo):

Esto se debe a un mal pedido en la propiedad INSTALLED_APPS en settings.py . Mi settings.py inicialmente contenía:

INSTALLED_APPS = ( ''my_app_1'', ''my_app_2'', ''my_app_3'', ''bootstrap_admin'', ''django.contrib.admin'', ''django.contrib.auth'', ''django.contrib.contenttypes'', ''django.contrib.messages'', ''django.contrib.sessions'', ''django.contrib.sites'', ''django.contrib.staticfiles'', ''social.apps.django_app.default'', ''mathfilters'', ''rest_framework'', )

my_app_* usa modelos de los paquetes contrib . El error es causado por el uso de modelos antes de declararlos (es decir, Django debe conocer las aplicaciones que contienen esos modelos antes de usarlos).

Para resolver esto, se debe cambiar el orden en que se declaran las aplicaciones. Específicamente, todas las aplicaciones de Django deben venir antes que las aplicaciones definidas por el usuario . En mi caso, la INSTALLED_APPS correcta se vería así:

INSTALLED_APPS = ( ''bootstrap_admin'', ''django.contrib.admin'', ''django.contrib.auth'', ''django.contrib.contenttypes'', ''django.contrib.messages'', ''django.contrib.sessions'', ''django.contrib.sites'', ''django.contrib.staticfiles'', ''social.apps.django_app.default'', ''mathfilters'', ''rest_framework'', ''my_app_1'', ''my_app_2'', ''my_app_3'', )

Ahora sé que esto podría no responder directamente a su pregunta, pero responde a una relacionada, y dado que este es el único enlace SO que se muestra en Google al pegar el error, lo he respondido aquí.

Sin embargo , creo que una situación similar está causando su problema:

¡Asegúrese de declarar las aplicaciones de "dependencia" antes de que las aplicaciones las usen! Los errores realmente no especifican qué aplicación está usando un modelo, por lo que tendría que empujar la aplicación que contiene el modelo que menciona a la parte superior, uno por uno, hasta que desaparezca el error.


Sospecho que solo una pequeña minoría de personas verá este error y será causado por lo mismo que yo, pero en caso de que ayude a alguien más, ¡parece que vale la pena agregar esta respuesta!

De repente, vi muchos de estos errores al ejecutar pruebas en un punto, resultó que accidentalmente había creado un __init__.py en el nivel superior de mi proyecto Django cuando estaba destinado a estar en un subdirectorio. La pista de que esto estaba sucediendo es que los errores, que fueron como:

/home/mark/mystupiddjangoproject/alerts/models.py:15: RemovedInDjango19Warning: Model class mystupiddjangoproject.alerts.models.Alert doesn''t declare an explicit app_label and either isn''t in an application in INSTALLED_APPS or else was imported before its application was loaded. This will no longer be supported in Django 1.9. class Alert(models.Model):

... incluyó el nombre del directorio en el que se encuentra el proyecto ( mystupiddjangoproject ) en el nombre del modelo completo, que debería haber sido: alerts.models.Alert .

Para solucionar esto, solo tenía que hacer:

rm __init__.py rm __init__.pyc


También enfrenté este problema y estaba relacionado con la forma en que cargaba el módulo signal.py desde una aplicación.

Como puede ahora, es bastante común tener problemas de importación circulares entre las señales y los modelos, y es habitual importarlos desde el archivo __init__.py de la aplicación o desde la parte inferior del archivo models.py para evitarlos.

Bueno, estaba usando el enfoque __init__.py , y simplemente moviendo la declaración de import signals al final de mi archivo models.py resolvió el problema .

¡Espero que esto ayude a alguien más!


Tengo este problema después de actualizar Django de 1.8 a 1.9.1:

RuntimeError en /

La clase de modelo blog.models.BlogCategory no declara una etiqueta_aplicación explícita y no está en una aplicación en INSTALLED_APPS.

Esta ayuda para resolver:

en blog / models.py:

class BlogCategory(models.Model): some vars & methods class Meta: app_label = ''BlogCategory''

Es un trabajo al 100%.


Yo tuve el mismo problema. Pongo un punto de interrupción en django.db.models.base.py:line82 e intento averiguar qué está causando este mensaje de advertencia.

# Look for an application configuration to attach the model to. app_config = apps.get_containing_app_config(module)

Básicamente, si su aplicación no existe en este momento, recibirá esa advertencia. Me di cuenta de que mi problema era que tenía un marco de trabajo de terceros (en mi caso, pajar) que intenta importar uno de mis modelos personalizados.

¿Quizás también tenga un paquete de terceros en INSTALLED_APPS antes de que sus aplicaciones personalizadas y su paquete de terceros hagan referencia a sus aplicaciones personalizadas? Esto sería posible si está utilizando algo como Django rest framework también.