ImportError: невозможно импортировать имя 'Maca' из частично инициализированного модуля 'maca.models' (скорее всего, из-за циклического импорта)

У меня эта ошибка 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)

Можете ли вы помочь мне справиться с этим?

Вы можете импортировать Maca2 в свойство maca_has_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()

Для ForeignKeys, OneToOneFields и ManyToManyFields можно использовать строковый литерал со структурой 'app_name.ModelName' для ссылки на модель, например:

# no import of maca2.models

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

Это позволяет избежать импорта модулей и, таким образом, циклического импорта. Если модель имеет один и тот же app_name, вы можете ссылаться на него по 'ModelName'.

Вернуться на верх