导入错误:无法从部分初始化的模块'maca.models'导入名称'Maca'(很可能是由于循环导入)



我有这个错误ImportError: cannot import name 'Maca' from partially initialized module 'maca.models' (most likely due to a circular import)

我有这样的代码

from maca.models import Maca
class Maca2(models.Model)
maca = models.ForeignKey(
Maca, on_delete=models.CASCADE
)

现在来模拟"澳门";我正在尝试访问每一个"澳门人"。像这样的对象

from maca2.models import Maca2
class Maca(models.Model)
...

@property
maca_has_maca2(self)
maca2 = Maca2.objects.filter(maca=self.id)
你能帮我处理这个吗?

可以在maca_has_maca2属性中导入Maca2:

#noimport of maca2.models
class Maca(models.Model):
# …
@property
def maca_has_maca2(self):
from maca2.models import Maca2
maca2 = Maca2.objects.all()

对于ForeignKeys,OneToOneFields和ManyToManyFields,您可以使用具有'app_name.ModelName'结构的字符串字元来引用模型,例如:

#noimport of maca2.models
class Maca(models.Model):
maca2 = models.ForeignKey(
'maca2.Maca2', on_delete=models.CASCADE
)

这样可以避免导入模块,从而避免循环导入。如果模型具有相同的app_name,您可以通过'ModelName'引用它。

最新更新