name cannot python django django-models

python - importerror: cannot import name django



Django no puede importar el nombre x (5)

¡Obtuve un error que no entiendo!

no se puede importar el nombre del elemento

En mi modelo, tengo artículos. Estos elementos son necesarios para las acciones. Pero algunos de estos elementos tienen un efecto en las acciones:

artículos

from django.db import models from effects.models import Effect class Type(models.Model): name = models.CharField(max_length=200) def __unicode__(self): return self.name class Item(models.Model): name = models.CharField(max_length=200) description = models.CharField(max_length=200) type = models.ForeignKey(Type) quality = models.IntegerField() effects = models.ManyToManyField(Effect,through=''ItemEffect'',blank=True) item_requirement = models.ManyToManyField(''self'',through=''ItemCraft'',symmetrical=False,blank=True) points = models.IntegerField() def __unicode__(self): return self.name class Food(Item): ap = models.IntegerField() class Tool(Item): durability = models.IntegerField() [....] class ItemEffect(models.Model): item = models.ForeignKey(Item) effect = models.ForeignKey(Effect) def __unicode__(self): return self.item.name+'':''+str.lower(self.effect.name) class Meta: verbose_name_plural = ''items effects'' class ItemCraft(models.Model): item = models.ForeignKey(Item,related_name=''%(class)s_item_crafted'') item_requirement = models.ForeignKey(Item,related_name=''%(class)s_item_required'') number = models.IntegerField() def __unicode__(self): return self.item.name+'' requires ''+str.lower(self.item.name)+''(''+self.number+'')'' class Meta: verbose_name_plural = ''items crafts''

comportamiento

from django.db import models from items.models import Item class Action(models.Model): name = models.CharField(max_length=200) description = models.CharField(max_length=200) pa = models.IntegerField() def __unicode__(self): return self.name class CraftAction(Action): item = models.ForeignKey(Item) def __unicode__(self): return self.item.name+''/'s craft'' class Meta: verbose_name_plural = ''crafts actions''

efectos

from django.db import models from actions.models import Action class Effect(models.Model): action = models.ForeignKey class ApEffect(Effect): ap = models.IntegerField()


Como sugirió madjar, es probable que haya una importación circular en su código. Si tiene problemas para descubrir dónde está el círculo (qué módulos e importaciones están involucrados), puede usar la opción de rastreo para tener una idea de dónde radica el problema:

python manage.py validate --traceback


Esta fue la primera publicación que apareció en Google, así que publicaré esta causa de error alternativa.

En mi código no había importaciones circulares, resolví este problema al eliminar manualmente todos los archivos .pyc en mi proyecto. Al parecer, reiniciar la aplicación no fue recompilar mi código.


Hay una importación circular en su código, es por eso que el artículo no se puede importar en acción.

Puede resolver el problema eliminando la importación de una clase en uno de sus archivos y reemplazándola por una cadena que contenga el nombre de la clase, como se explica en la documentación . Por ejemplo :

effects = models.ManyToManyField(''effects.Effect'',through=''ItemEffect'',blank=True)


Intente importar Localmente su modelo en lugar de uno público, Ejemplo

def sample_function(): from effects.models import Effect # import within function or class


Situación similar a Pythonator: tuve una causa alternativa para el mismo mensaje de error.

En mi caso, olvidé activar el entorno virtual que configuré para mi proyecto e intenté ejecutar el servidor. Después de activar el entorno y volver a ejecutar el servidor, no tuve problemas.