姜戈。导入错误。无法导入模型
Django. ImportError. Cannot import Model
这很奇怪。我找不到错误。我无法 运行 服务器(或任何东西)因为我得到一个错误:
ImportError: cannot import name Libro
这些是模型:
perfiles.models.py-
from django.db import models
from django.contrib.auth.models import User
from libros.models import Libro <- WEIRD ERROR ??¡?
class Perfil(models.Model):
usuario = models.OneToOneField(User, null=True)
actualmente_leyendo = models.ForeignKey(Libro, related_name="actualmente_leyendo")
...
libros.models.py -
from django.db import models
from perfiles.models import Perfil
class Libro(models.Model):
titulo = models.CharField(max_length=255, blank=True)
autor = models.CharField(max_length=255, blank=True)
imagen = models.CharField(max_length=255, blank=True)
因此,"libros" 和 "perfiles" 都是在我的 settings.py 上注册的应用程序,当我打开 ´python manage.py shell´ 和 运行 ´from libros.models import Libro´,它工作正常并给了我
(InteractiveConsole)
>>> from libros.models import Libro
>>> Libro
<class 'libros.models.Libro'>
所以,错误可能在哪里?为什么 python shell 可以导入模型而另一个模型不能?任何想法都会有所帮助。谢谢
您遇到循环导入错误。您正在尝试在 perfiles.model 中导入 Libro
,并且您正在尝试在 libros.model 中导入 Perfil
。
您可以使用 django.db.models.loading.get_model
来解决这个问题。
你可以这样做
from django.db.models.loading import get_model
Libro = get_model('libros', 'Libro')
class Perfil(models.Model):
usuario = models.OneToOneField(User, null=True)
actualmente_leyendo = models.ForeignKey(Libro, related_name="actualmente_leyendo")
或者更好的是,在从其他应用程序引用模型时,不导入模型,只传递格式为 <app>.<model_name>
的字符串
class Perfil(models.Model):
usuario = models.OneToOneField(User, null=True)
actualmente_leyendo = models.ForeignKey('libros.Libro', related_name="actualmente_leyendo")
这很奇怪。我找不到错误。我无法 运行 服务器(或任何东西)因为我得到一个错误:
ImportError: cannot import name Libro
这些是模型:
perfiles.models.py-
from django.db import models
from django.contrib.auth.models import User
from libros.models import Libro <- WEIRD ERROR ??¡?
class Perfil(models.Model):
usuario = models.OneToOneField(User, null=True)
actualmente_leyendo = models.ForeignKey(Libro, related_name="actualmente_leyendo")
...
libros.models.py -
from django.db import models
from perfiles.models import Perfil
class Libro(models.Model):
titulo = models.CharField(max_length=255, blank=True)
autor = models.CharField(max_length=255, blank=True)
imagen = models.CharField(max_length=255, blank=True)
因此,"libros" 和 "perfiles" 都是在我的 settings.py 上注册的应用程序,当我打开 ´python manage.py shell´ 和 运行 ´from libros.models import Libro´,它工作正常并给了我
(InteractiveConsole)
>>> from libros.models import Libro
>>> Libro
<class 'libros.models.Libro'>
所以,错误可能在哪里?为什么 python shell 可以导入模型而另一个模型不能?任何想法都会有所帮助。谢谢
您遇到循环导入错误。您正在尝试在 perfiles.model 中导入 Libro
,并且您正在尝试在 libros.model 中导入 Perfil
。
您可以使用 django.db.models.loading.get_model
来解决这个问题。
你可以这样做
from django.db.models.loading import get_model
Libro = get_model('libros', 'Libro')
class Perfil(models.Model):
usuario = models.OneToOneField(User, null=True)
actualmente_leyendo = models.ForeignKey(Libro, related_name="actualmente_leyendo")
或者更好的是,在从其他应用程序引用模型时,不导入模型,只传递格式为 <app>.<model_name>
的字符串
class Perfil(models.Model):
usuario = models.OneToOneField(User, null=True)
actualmente_leyendo = models.ForeignKey('libros.Libro', related_name="actualmente_leyendo")