Понимание отношений «многие ко многим»: как выбрать экземпляры, которые принадлежат моему полю «многие ко многим» в django? Ny - PullRequest
1 голос
/ 11 июня 2019

У меня есть две модели, которые я хочу связать со многими отношениями.BuildingGroup и Building

Моя идея заключается в том, что, например, Building Group1 содержит несколько зданий, а BuildingGroup2 содержит другие здания.

Я думаю, что должен был правильно настроить его, но сейчас он работает так, что каждая BuildingGroup всегда содержит ВСЕ мои здания.Я не могу удалить здание и выборочно решить, какое здание принадлежит какой группе.

Вот мои модели:


class Building(models.Model):
    name  = models.CharField(max_length=120, null=True, blank=True)

    def __str__(self):
        return self.name


class BuildingGroup(models.Model):
    description           = models.CharField(max_length=500, null=True, blank=True)
    buildings             = models.ManyToManyField(Building, blank=True)

Это правильный способ настроить?И если так, как я могу изменить это, чтобы я мог сгруппировать это правильно ??

Любая помощь высоко ценится!

1 Ответ

1 голос
/ 11 июня 2019

Вы должны изменить отношения с базой данных, как показано ниже

class Building(models.Model):
  name  = models.CharField(max_length=120, null=True, blank=True)
  group = models.ManyToMany(BuildingGroup, related_name="buildings")

  def __str__(self):
    return self.name


class BuildingGroup(models.Model):
  name = models.CharField(max_length=500, null=True, blank=True)

Теперь запрос как

group = BuildingGroup.objects.get(pk=10) # just a random id
rel_buildings = group.buildings.all()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...