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

2024-09-27 20:18:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这个错误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
)

现在,为了模拟“Maca”,我尝试访问每一个“Maca2”对象,如下所示

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


@property
maca_has_maca2(self)
  maca2 = Maca2.objects.filter(maca=self.id)

你能帮我处理这件事吗


Tags: namefromimportselfmodelmodels错误class
1条回答
网友
1楼 · 发布于 2024-09-27 20:18:21

您可以在maca_has_maca2属性中导入Maca2

# no import of maca2.models

class Maca(models.Model):
    # …

    @property
    def maca_has_maca2(self):
        from maca2.models import Maca2
         maca2 = Maca2.objects.all()

对于ForeignKeyOneToOneFieldManyToManyField而言,可以使用结构为'app_name.ModelName'的字符串文字来引用模型,例如:

# no import of maca2.models

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

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

相关问题 更多 >

    热门问题