我不確定您是否可以通過常規ManytoManyField
來實現此目標。你可以嘗試明確定義中間模型。
nb:未經測試的代碼!
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)
然後,您可以在shell中創建以下關係,如下所示。
# 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
對象愛麗絲是跟隨者,通過連接表的id訂購的queryset的,用線:
>>> qs = FollowerRelationship.objects.filter(follower=a).order_by('id')
>>> [fr.following for fr in qs]
請注意,您通過FollowerRelationship
必須循環對象,以獲得關係中的'follow'Person
。
您可能還想看看Django文檔中的Extra fields on many-to-many relationships,該文檔介紹瞭如何以多對多關係指定中間模型。
有趣/奇怪的問題。 ManyToMany用於執行連接的中間表的id字段很有趣,因爲...? – 2009-12-15 03:58:38
請張貼一些代碼。 – czarchaic 2009-12-15 06:36:53
@peter我認爲該表中的id應顯示所建立關係的順序,以便他可以完成他的「你最近遵循的:」主意。 – 2009-12-15 18:45:05