我正在嘗試實現一個小項目,其中一個人可以添加另一個人作爲朋友。多對多 - django模型 - 瞭解
我想在這個數據庫中關係模型:我想,我會做另一種模式叫做friendship
,我會寫它的模式是這樣的:
class friendship(models.Model):
friend = models.ManyToManyField(User)
這一切?我以某種方式卡在不知道如何設計這一邏輯..我閱讀文檔,但我不明白這一點,有人可以幫助我。
非常感謝
我正在嘗試實現一個小項目,其中一個人可以添加另一個人作爲朋友。多對多 - django模型 - 瞭解
我想在這個數據庫中關係模型:我想,我會做另一種模式叫做friendship
,我會寫它的模式是這樣的:
class friendship(models.Model):
friend = models.ManyToManyField(User)
這一切?我以某種方式卡在不知道如何設計這一邏輯..我閱讀文檔,但我不明白這一點,有人可以幫助我。
非常感謝
除非需要存儲關於關係的額外信息,否則不需要創建另一個模型。例如,它已經定義的基本關係:
class User(models.Model):
...
friends = models.ManyToManyField(self) # self means User.
如果你想存儲額外的信息,比如哪些類型的朋友,如何接近他們。 然後你需要一個額外的模型。
class User(models.Model):
...
friends = models.ManyToManyField(self, through='Friendship')
class Friendship(models.Model):
from_user = models.ForeignKey(User, related_name="from_user")
to_user = models.ForeignKey(User, related_name="to_user")
friend_type = models.CharField(max_length=255)
friend_rated = models.FloatField()
哇,很不錯的解釋。非常感謝 – doniyor 2013-04-07 14:16:58
這與使用ForeignKey而不是ManyToMany關係有什麼不同?是因爲Freindship模型包含Foriengkeys? – 2015-05-11 04:31:59
看一看http://stackoverflow.com/questions/4219979/sql-best-practise-for-a-friendship-table – MostafaR 2013-04-07 14:08:36