Как указать отношения ManyToMany в моделях Django, когда оба ключа являются первичными?
Я создаю модели Django и у меня возникла проблема с определением отношения ManyToMany, чтобы в базе данных была создана таблица объединения. Две модели, которые я пытаюсь объединить, выглядят следующим образом:
class Host(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
bio_information = models.ForeignKey(Bio, on_delete=models.CASCADE)
class Team(models.Model):
name = models.CharField(max_length=50)
creator = models.ForeignKey(Host, on_delete=models.CASCADE)
Нужно объединить их по первичным ключам, чтобы в итоге получилась объединенная таблица, которая выглядит следующим образом с именем таблицы host_team:
id int [PK]
host_id int
team_id int
Поскольку вы не включаете ID при создании моделей, как мне обозначить отношения MtoM и заставить django создать таблицу join?
Вы не можете использовать соединение с M2M-отношениями.
Вы используете prefetch_related
. Он выполнит дополнительный запрос и сохранит результат в кэше.
В этом случае ваш код будет выглядеть следующим образом:
queryset = Team.objects.all().prefetch_related("creator")
Подробнее вы можете прочитать здесь: https://docs.djangoproject.com/en/4.1/ref/models/querysets/#prefetch-related