如何在Django中编写这个“模型”?

时间:2009-10-09 08:54:04

标签: python django

我目前正在使用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)

谢谢

1 个答案:

答案 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'), )