Здравствуйте, я пытаюсь понять модели данных Django и их возможности. После использования «один к одному» и «m2m» я пытаюсь понять дополнительные поля «m2m». Поэтому я последовал примеру Django Doc и заполнил модели некоторыми данными.
models.py
class Person(models.Model):
name = models.CharField(max_length=128)
def __str__(self):
return self.name
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person, through='Membership')
def __str__(self):
return self.name
class Membership(models.Model):
person = models.ForeignKey(Person, on_delete=models.CASCADE)
group = models.ForeignKey(Group, on_delete=models.CASCADE)
date_joined = models.DateField()
invite_reason = models.CharField(max_length=64)
Пока все в порядке,но когда я посмотрел в таблицы моделей через pgAdmin 4 (я использую PostgreSQL), я не смог найти ни одного столбца members
в модели Group
. Так что я сделал небольшое визуальное представление о своей модели и некоторых скриншотах pgAdmin для лучшего понимания.

Как видите, Group
имеет толькоid
и name
столбец.
Вопрос
мой вопрос: это отношение m2m members
из Group
, только какое-то "виртуальное"созданы отношения через Membership.person.fk
и Membership.group.fk
? То есть нет поля, которое будет заполнено? Я пытаюсь представить, что он работает как рекурсивный запрос экземпляра?