Как обойти "круговой импорт" в 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