2011-06-02 34 views
10

我想在我的Django應用程序中實現關注者/關注者功能。如何在Django中實現關注者/關注

我有一個用戶配置類每用戶(django.contrib.auth.User):

class UserProfile(models.Model): 
    user = models.ForeignKey(User, unique = True, related_name = 'user') 
    follows = models.ManyToManyField("self", related_name = 'follows') 

於是,我就這樣做在Python Shell:

>>> user_1 = User.objects.get(pk = 1) # <-- mark 
>>> user_2 = User.objects.get(pk = 2) # <-- john 
>>> user_1.get_profile().follows.add(user_2.get_profile()) 
>>> user_1.get_profile().follows.all() 
[<UserProfile: john>] 
>>> user_2.get_profile().follows.all() 
[<UserProfile: mark>] 

但正如您所看到的,當我向用戶的follows字段添加新用戶時,還會在另一側添加對稱關係。從字面上看:如果user1跟隨user2,user2跟隨user1,並且這是錯誤

我的錯誤在哪裏?你有沒有一種實現追隨者的方式,並遵循正確的方式?

謝謝你們。

回答

18

套裝symmetrical在你Many2Many關係題:

follows = models.ManyToManyField('self', related_name='follows', symmetrical=False) 
+0

這是正確的傢伙。謝謝。 – 2011-06-03 02:09:08

+2

symmetrical = False和related_name ='fie +'有什麼區別? – danielrvt 2012-08-07 01:46:16

11

除了mouad的答案,我可以建議選擇不同的* related_name *:如果馬克如下約翰,隨後馬克是約翰的之一追隨者,對嗎?

+0

+1你說的是正確的傢伙。 – 2011-06-03 02:09:30

相關問題