为了账号安全,请及时绑定邮箱和手机立即绑定

基于django的微博如何设计用户model

基于django的微博如何设计用户model

临摹微笑 2019-04-13 08:46:27
准备基于django.contrib.auth.models进行扩展,但是对于关注和粉丝这两个field的设计一直拿不准,使用foreignkey的话只能关注一人,使用manytomanyfield的话关注的这个field既可能表示关注又可能表示粉丝完全无法区分,求高手指教该如何建立这个model,谢谢。
查看完整描述

2 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

可以建一个关系表Friendship,然后字段field分别是粉丝和关注,并且Foreignkey为User
classFriendship(models.Model):
from_friend=models.ForeignKey(User,related_name='friend_set')
to_friend=models.ForeignKey(User,related_name='to_friend_set')
可以参考这个:社交网络中关注和粉丝的数据设计
算不上高明的方法,对于一般的需求也能解决
                            
查看完整回答
反对 回复 2019-04-13
?
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)
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 289 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信