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.