Как обойти "круговой импорт" в Django?

У меня возникает ошибка "кругового импорта" при попытке сделать миграции в Django. Речь идет о двух моделях. Ошибка отмечается на Team.

from django.db import models
from django.contrib.auth.models import User
from footballapi.models.team import Team
from footballapi.models.bio import Bio

class Player(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    bio = models.ForeignKey(Bio, on_delete=models.CASCADE)
    teams = models.ManyToManyField(Team, on_delete=models.CASCADE, related_name="members")


from django.db import models
from footballapi.models.player import Player

class Team(models.Model):
    name = models.CharField(max_length=50)
    roster_spot = models.ForeignKey(Player, on_delete=models.CASCADE)

Я думаю, что проблема в ManyToManyField, и я продолжаю читать, что я должен использовать строку вместо импорта. Но я перепробовал все комбинации слов и не могу найти подходящую строку. Что это должно быть? Кстати, все эти модели из одного приложения.

Кроме классов вы также можете использовать строку "имя_приложения.имя_модели" для отношения foreignkey, избегая таким образом импорта друг друга.

teams = models.ManyToManyField("app_name.Team", on_delete=models.CASCADE, related_name="members")

Альтернативно, вы можете изменить вашу модель данных с помощью сквозной таблицы в отношениях m2m. Используя эту таблицу, вы можете установить булево значение, указывающее, играет ли игрок в roster_post. Посмотрите документацию: https://docs.djangoproject.com/en/4.1/ref/models/fields/#django.db.models.ManyToManyField.through

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