Я не уверен, что вы можете добиться этого с помощью обычного ManytoManyField
. Вы можете попытаться определить промежуточную модель в явном виде.
Примечание: непроверенный код!
class Person(models.Model)
name = models.CharField(max_length=30)
class FollowerRelationship(models.Model)
follower = models.ForeignKey(Person, related_name = following_set)
following = models.ForeignKey(Person, related_name = follower_set)
Затем вы можете создать следующие отношения в оболочке следующим образом.
# Create Person objects
>>> a = Person(name="Alice")
>>> a.save()
>>> b = Person(name="Bob")
>>> b.save()
>>> c = Person(name="Chris")
>>> c.save()
# Let Alice follow Chris and Bob
>>> FollowerRelationship.objects.create(follower=a, following=c)
>>> FollowerRelationship.objects.create(follower=a, following=b)
Вы можете создать набор запросов из FollowerRelationship
объектов, где Алиса является последователем, упорядоченным по идентификатору таблицы соединения, со строкой:
>>> qs = FollowerRelationship.objects.filter(follower=a).order_by('id')
>>> [fr.following for fr in qs]
Обратите внимание, что вам нужно пройтись по FollowerRelationship
объектам, чтобы получить "1011 *" в отношениях.
Возможно, вы захотите взглянуть на Дополнительные поля отношений «многие ко многим» в документах Django, в которых описано, как указать промежуточную модель в отношении «многие ко многим».