如何从时间轴中只获取推文(仅帖子)?
How to get only Tweet (only posts) from the timeline?
每当创建推文时,都会将其 activity 添加到 getStream 生产应用程序。
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,
我的期望:
Feed:仅在时间轴上显示推文(我不想看到谁开始关注我,或喜欢任何 post)- 就像 Instagram!
通知:谁关注了我,谁点了我的post,谁评论了我的post。
views.py
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
的一个很酷的功能
如何在时间线上只显示推文(而不是点赞、关注或其他应通知的活动)?
谢谢
更新
如果我没理解错的话,应该可以。这有效吗?
class Follow(models.Model, Activity):
follower =
following
@property
def activity_author_feed(self):
return 'notification'
Activity 1: user A follows user B.
Activity 1 goes to 'user' feed + 'notification' feed (not timeline feed)
//notification feed name already exists so I don't need to create follow feed group
Activity 2: user B creates Post
Activity 2 goes to 'user' feed + 'timeline' feed
注意:我假设您的关注和点赞模型有一个 "user" 字段。如果没有,最好使用完整模型 类 更新问题,并确认您是否正在设置任何其他后续关系。
stream-django 集成提供了一个 'Activity' 模型 Mixin 和 FeedManager
模型管理器。他们一起工作,将活动添加到 Feed 组和 Feed,其唯一性 "feed id" 来自模型实例。
默认情况下,提要 ID 由应用范围 settings.USER_FEED
设置决定。这应该适用于您的 Tweet
模型,但可能不是您想要的 Follow
和 Like
模型。理想情况下,与这些模型相关的活动属于单独的提要。这可以通过覆盖 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
要将这些活动复制到通知提要中,请实施 Activity.activity_notify()
函数以 return 目标提要列表。
@property
def activity_notify(self):
return [feed_manager.get_notification_feed(self.user.id)]
每当创建推文时,都会将其 activity 添加到 getStream 生产应用程序。
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,
我的期望:
Feed:仅在时间轴上显示推文(我不想看到谁开始关注我,或喜欢任何 post)- 就像 Instagram!
通知:谁关注了我,谁点了我的post,谁评论了我的post。
views.py
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
的一个很酷的功能
如何在时间线上只显示推文(而不是点赞、关注或其他应通知的活动)?
谢谢
更新
如果我没理解错的话,应该可以。这有效吗?
class Follow(models.Model, Activity):
follower =
following
@property
def activity_author_feed(self):
return 'notification'
Activity 1: user A follows user B.
Activity 1 goes to 'user' feed + 'notification' feed (not timeline feed)
//notification feed name already exists so I don't need to create follow feed group
Activity 2: user B creates Post
Activity 2 goes to 'user' feed + 'timeline' feed
注意:我假设您的关注和点赞模型有一个 "user" 字段。如果没有,最好使用完整模型 类 更新问题,并确认您是否正在设置任何其他后续关系。
stream-django 集成提供了一个 'Activity' 模型 Mixin 和 FeedManager
模型管理器。他们一起工作,将活动添加到 Feed 组和 Feed,其唯一性 "feed id" 来自模型实例。
默认情况下,提要 ID 由应用范围 settings.USER_FEED
设置决定。这应该适用于您的 Tweet
模型,但可能不是您想要的 Follow
和 Like
模型。理想情况下,与这些模型相关的活动属于单独的提要。这可以通过覆盖 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
要将这些活动复制到通知提要中,请实施 Activity.activity_notify()
函数以 return 目标提要列表。
@property
def activity_notify(self):
return [feed_manager.get_notification_feed(self.user.id)]