我正在尝试实现一个小项目,其中一个人可以添加另一个人作为朋友。多对多 - 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