对于被跟踪的用户而言,timeline_aggregated为空

时间:2017-05-03 09:04:59

标签: getstream-io

基本上我有这个模型:

# models.py
class Follow(Activity, models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='friends')
    target = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='followers')
    created_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        unique_together = ('user', 'target', )

    def __str__(self):
        return '{0} follows {1}'.format(self.user, self.target)

    @property
    def extra_activity_data(self):
        return {'username': self.user.username}

    @classmethod
    def activity_related_models(cls):
        return ['user', 'target']

    @property
    def activity_notify(self):
        if not settings.STREAM_DISABLE_MODEL_TRACKING:
            # Another example would be following a user. You would commonly want to notify the user which is being
            # followed.
            return [feed_manager.get_notification_feed(self.target_id)]


@receiver(post_delete, sender=Follow)
def unfollow_user_feed(sender, instance, **kwargs):
    if not settings.STREAM_DISABLE_MODEL_TRACKING:
        feed_manager.unfollow_user(instance.user_id, instance.target_id)


@receiver(post_save, sender=Follow)
def follow_user_feed(sender, instance, created, **kwargs):
    if created and not settings.STREAM_DISABLE_MODEL_TRACKING:
        feed_manager.follow_user(instance.user_id, instance.target_id)

可以使用简单的工作流程

<load gab and freddy user instances>
Follow.objects.create(user=gab, target=freddy)  # gab follows freddy

在Feed user:freddy.id的GetStream信息中心中,我看到有2个关注者timeline_aggregated:gab.idtimeline:gab.id

现在,如果我加载freddy的timeline_aggregated:

feed_manager.get_feed('timeline_aggregated', freddy.id)
activities = self.feed.get(limit=self.page_size)['results']

它不包含“gab跟随freddy”的引用,因此activities{},而我预计会有。{/ p>

我错了吗?

谢谢,

d

1 个答案:

答案 0 :(得分:1)

保存关注模型时,会创建一个活动并将其添加到关注者的用户Feed中,并将副本发送到目标的通知Feed(请参阅Follow.activity_notify)。

在您的示例中,活动“gab follow freddy”应该在这两个Feed中:“user:bag”和“notification:freddy”。