我目前正在使用Django Users模型。 非常简单。但是,我想添加一个功能:添加好友!
我想在我的表中创建2列:
UID(用户的ID) friend_id(他的朋友的ID!...当然,这个ID也在Django的用户模型中。 UID-friend_id组合必须是唯一的!例如,如果我的ID是84,我不能有两行相同,因为我只能订阅同一个朋友一次。
有谁能告诉我这是否是正确的方法?我应该为“friend_id”做一些KEY关系,还是应该像这样把它留作“IntegerField”?
class Friend(models.Model):
uid = models.ForeignKey(User)
friend_id = models.IntegerField(default=0)
谢谢
答案 0 :(得分:11)
您应该创建一个定义两个用户之间关系的模型,然后定义两个外键字段,每个字段对应一个用户。然后,您可以添加唯一约束以确保没有重复项。
这里有一篇文章解释了如何执行此操作:http://www.packtpub.com/article/building-friend-networks-with-django-1.0
该页面的示例模型:
class Friendship(models.Model):
from_friend = models.ForeignKey(
User, related_name='friend_set'
)
to_friend = models.ForeignKey(
User, related_name='to_friend_set'
)
def __unicode__(self):
return u'%s, %s' % (
self.from_friend.username,
self.to_friend.username
)
class Meta:
unique_together = (('to_friend', 'from_friend'), )