2011-06-10 7 views
0

我希望用戶能夠遵循彼此(每個用戶可以跟隨並由多個用戶跟隨)。用ForeignKeys代表它有什麼問題嗎?Django - 如何表示跟隨關係的2種方式

class Follow(models.Model): 
     followed=models.ForeignKey(User, unique=True) 
     follower=models.ForeignKey(User,related_name="follower") 

     def __unicode__(self): 
      return self.followed 

回答

2

你最好使用一個多對多對一個PersonUser類的自我。例如:

class Person(models.Model): 
    first_name = CharField(max_length=50) 
    followers = ManyToMany("self", related_name="following") 

這樣,用更少的代碼,你可以做這樣的事情:

p = Person.objects.get(first_name="bob") 
p.following.all() # Everyone bob is following 
p.followers.all() # Everyone that is following bob 

見Django文檔對多對多自更多的信息。

+0

我不會在這裏看到一件事。 M2M關係是否對稱,意味着跟隨一個人的人也跟着那個人,反之亦然?如果情況並非如此,我不明白這是如何工作的。如果是這種情況,我想要稍微不同的功能(關係不應該是對稱的) – Ben 2011-06-10 05:06:08

+0

這裏的關係不會是對稱的。您必須手動添加它才能使其對稱。 – 2011-06-27 15:57:55