玩蛇网提供最新Python编程技术信息以及Python资源下载!

Django微博搭建要怎样设计用户model

准备基于django.contrib.auth.models进行扩展,但是对于关注和粉丝这两个field的设计一直拿不准,使用foreignkey的话只能关注一人,使用manytomanyfield的话关注的这个field既可能表示关注又可能表示粉丝完全无法区分,求高手指教该如何建立这个model,谢谢。

采用 @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)

可以建一个关系表Friendship, 然后字段field分别是 粉丝和关注,并且ForeignkeyUser

class Friendship(models.Model):

    from_friend = models.ForeignKey(User, related_name = 'friend_set')
    to_friend = models.ForeignKey(User, related_name = 'to_friend_set')

可以参考这个 :社交网络中关注和粉丝的数据设计

算不上高明的方法,对于一般的需求也能解决

玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/wenda/wd19366.html

相关文章 Recommend

玩蛇网Python互助QQ群,欢迎加入-->: 106381465 玩蛇网Python新手群
修订日期:2017年05月19日 - 11时00分19秒 发布自玩蛇网

您现在的位置: 玩蛇网首页 > Python问题解答 > 正文内容
我要分享到:

必知PYTHON教程 Must Know PYTHON Tutorials

必知PYTHON模块 Must Know PYTHON Modules