如何只获得时间线上的推文(仅限帖子)?

时间:2017-12-09 12:09:00

标签: django-rest-framework getstream-io

每当创建推文时,它的活动都会添加到getStream制作应用中。

li

我的期望:

Feed :仅在时间轴上显示推文(我不想看看谁开始关注我,或者喜欢任何帖子) - 就像Instagram一样!

通知:谁开始关注我,谁喜欢我的帖子,谁对我的帖子发表了评论。

views.py

class Tweet(models.Model, Activity):
    user = models.ForeignKey()
    text = models.CharField()

class Follow(models.Model, Activity): <- This is adding new activity to the timeline

def follow_feed_lisnner(~)
signal.post_save.connect(~)

class Like(models.Model, Activity): <- Like is adding to activity so timeline automatically shows who liked this post, 

可能的解决方案

  • 使用feeds = feed_manager.get_news_feeds(request.user.id) # get the newsfeed for user. activities = feeds.get('timeline').get()['results'] activities = enricher.enrich_activities(activities) (更低级别)来解决此问题。 (我不知道是否有帮助)
  • 也许我错过了python-stream
  • 的酷炫功能

我们如何在时间线上只获得推文(不喜欢,关注或其他应该通知的活动)?

谢谢

更新

如果我理解正确,这应该有效。这有效吗?

stream-django

1 个答案:

答案 0 :(得分:1)

注意:我假设您的Follow and Like模型有一个&#34; user&#34;领域。如果没有,最好使用完整的模型类更新问题,并确认您是否正在设置任何其他关系。

stream-django集成提供了一个&#39; Activity&#39;模型Mixin和FeedManager模型管理器。他们共同努力将活动添加到Feed组和Feed中,这些Feed和Feed的唯一标识符#34;是从Model实例派生的。

默认情况下,Feed ID由应用程序范围settings.USER_FEED设置决定。这应该适用于您的Tweet模型,但可能不是您想要的FollowLike模型。与这些模型相关联的活动理想地属于单独的订阅源。这可以通过覆盖Activity.activity_author_feed属性函数来设置。

class Follow(models.Model, Activity):
    # snipping fields

    @property
    def activity_author_feed(self):
        return 'Follow' # Must match a Feed Group defined in the Stream dashboard

    @property
    def activity_actor_attr(self):
        return self.author

要将这些活动复制到通知Feed中,请实施Activity.activity_notify()功能以返回目标Feed列表。

    @property
    def activity_notify(self):
        return [feed_manager.get_notification_feed(self.user.id)]