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()
Для ForeignKey
s, OneToOneField
s и ManyToManyField
s можно использовать строковый литерал со структурой 'app_name.ModelName'
для ссылки на модель, например:
# no import of maca2.models
class Maca(models.Model):
maca2 = models.ForeignKey(
'maca2.Maca2', on_delete=models.CASCADE
)
Это позволяет избежать импорта модулей и, таким образом, циклического импорта. Если модель имеет один и тот же app_name
, вы можете ссылаться на него по 'ModelName'
.