Answers
采用
@rsj217
的方案就可以实现社交网络中的关注功能,除此之外也可以采用
Activity Stream
来实现,Activity Stream使用了Django中的ContentType包,因此使用它可以实现任何对象之间的关注功能(例如:组的关注、资源的关注等),具体使用方式可以看一下上面的文档。
@python_2_unicode_compatible
class Follow(models.Model):
"""
Lets a user follow the activities of any specific actor
"""
user = models.ForeignKey(user_model_label)
content_type = models.ForeignKey(ContentType)
object_id = models.CharField(max_length=255)
follow_object = generic.GenericForeignKey()
actor_only = models.BooleanField("Only follow actions where "
"the object is the target.", default=True)
started = models.DateTimeField(default=now)
objects = FollowManager()
class Meta:
unique_together = ('user', 'content_type', 'object_id')
def __str__(self):
return '%s -> %s' % (self.user, self.follow_object)
破碎的悲剧
answered 10 years, 3 months ago
可以建一个关系表
Friendship
, 然后字段
field
分别是 粉丝和关注,并且
Foreignkey
为
User
class Friendship(models.Model):
from_friend = models.ForeignKey(User, related_name = 'friend_set')
to_friend = models.ForeignKey(User, related_name = 'to_friend_set')
可以参考这个 : 社交网络中关注和粉丝的数据设计
算不上高明的方法,对于一般的需求也能解决
苦逼的阿卡琳
answered 10 years, 3 months ago