关注Django中的twitter用户,你会怎么做?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关注Django中的twitter用户,你会怎么做?相关的知识,希望对你有一定的参考价值。

我正在玩Django / python中的人际关系,我想知道你们如何在用户和他的粉丝以及他跟随的用户的追随者之间建立关系。

很想读你的意见......

答案

首先,你应该了解如何store additional information about users。它需要另一个与一个用户关系的模型,即“配置文件”模型。

然后,您可以使用M2M字段,假设您使用django-annoying,您可以定义您的用户配置文件模型:

from django.db import models

from annoying.fields import AutoOneToOneField

class UserProfile(models.Model):
    user = AutoOneToOneField('auth.user')
    follows = models.ManyToManyField('UserProfile', related_name='followed_by')

    def __unicode__(self):
        return self.user.username

并使用它:

In [1]: tim, c = User.objects.get_or_create(username='tim')

In [2]: chris, c = User.objects.get_or_create(username='chris')

In [3]: tim.userprofile.follows.add(chris.userprofile) # chris follows tim

In [4]: tim.userprofile.follows.all() # list of userprofiles of users that tim follows
Out[4]: [<UserProfile: chris>]

In [5]: chris.userprofile.followed_by.all() # list of userprofiles of users that follow chris
Out[5]: [<UserProfile: tim>]

此外,请注意您可以检查/重用django-subscriptiondjango-actstreamdjango-social等应用程序(可能更难使用)......

您可能需要查看notificationsactivities的django软件包,因为它们都需要一些跟随/订阅数据库设计。

另一答案

我就是这样做的:

class Tweeter(models.Model):  
    user = models.ManyToManyField('self', symmetrical=False, through='Relationship')

class Relationship(models.Model):  
    who = models.ForeignKey(Tweeter, related_name="who")
    whom = models.ForeignKey(Tweeter, related_name="whom")

在壳中,

在[1]中:t = Tweeter()

在[2]中:t.save()

在[3]中:f = Tweeter()

在[4]中:f.save()

在[5]中:r =关系()

在[6]中:r.who = t

在[7]中:r.whom = f

在[8]中:r.save()

在[18]中:Relationship.objects.all()[0] .who.id 出[18]:1L

在[19]中:Relationship.objects.all()[0] .whom.id 出[19]:2L

另一答案

编辑:正如评论者所说,使用ManyToManyField更有意义。用户可以拥有0-x用户关注者,用户可以关注0-x用户。

https://docs.djangoproject.com/en/1.3/ref/models/fields/#manytomanyfield

没有进入代码,没有更多的话要说。

以上是关于关注Django中的twitter用户,你会怎么做?的主要内容,如果未能解决你的问题,请参考以下文章

如何通过 Twitter API 找人?

我无法在 django 中进行查询以过滤掉当前登录用户正在关注的那些用户的帖子

如何使用 django 制作类似 twitter 的主页?

按主题从 twitter 用户构建网络图

如何在Django中获取按用户过滤的关注者总数?

有没有办法让当前的 Twitter 登录用户已经关注或取消关注我? [关闭]