准备基于django.contrib.auth.models进行扩展,但是对于关注和粉丝这两个field的设计一直拿不准,使用foreignkey的话只能关注一人,使用manytomanyfield的话关注的这个field既可能表示关注又可能表示粉丝完全无法区分,求高手指教该如何建立这个model,谢谢。
2 回答
月关宝盒
TA贡献1772条经验 获得超5个赞
可以建一个关系表Friendship,然后字段field分别是粉丝和关注,并且Foreignkey为UserclassFriendship(models.Model):from_friend=models.ForeignKey(User,related_name='friend_set')to_friend=models.ForeignKey(User,related_name='to_friend_set')可以参考这个:社交网络中关注和粉丝的数据设计算不上高明的方法,对于一般的需求也能解决
UYOU
TA贡献1878条经验 获得超4个赞
可以实现社交网络中的关注功能,除此之外也可以采用ActivityStream来实现,ActivityStream使用了Django中的ContentType包,因此使用它可以实现任何对象之间的关注功能(例如:组的关注、资源的关注等),具体使用方式可以看一下上面的文档。@python_2_unicode_compatibleclassFollow(models.Model):"""Letsauserfollowtheactivitiesofanyspecificactor"""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("Onlyfollowactionswhere""theobjectisthetarget.",default=True)started=models.DateTimeField(default=now)objects=FollowManager()classMeta:unique_together=('user','content_type','object_id')def__str__(self):return'%s->%s'%(self.user,self.follow_object)
添加回答
举报
0/150
提交
取消