Я думаю, вы слишком буквально думаете об этом.Допустим, вы не использовали through
:
class Person(models.Model):
name = models.CharField(max_length=128)
def __unicode__(self):
return self.name
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person)
def __unicode__(self):
return self.name
За кулисами Джанго, по сути, создает для вас следующую модель:
class GroupPerson(models.Model)
group = models.ForeignKey(Group)
person = models.ForeignKey(Person)
Причиной создания модели Membership
является добавление дополнительных данных, которые автоматически создаст модель Django , автоматически создающая , по умолчанию не будет, но, поскольку вы больше не используете значение по умолчанию, вы должны сообщить Django, что, используя through
.По сути, вы сохраняете API, предоставляемый Django для ManyToManyFields.