GetStream(Django) - 无法丰富通知Feed

时间:2015-12-30 07:48:36

标签: python django getstream-io

我正在使用GetStream Django包与getstream.io进行互动。我使用Enricher()类成功地使用feed_manager.get_user_feed()的Django模型信息来丰富我的活动供稿,但使用feed_manager.get_notification_feed()无法获得类似的结果

这是我的模型的缩短版本。

class Task(models.Model, Activity):
    title = models.CharField()
    assigned_to = models.ForeignKey(User)
    created_at = models.DateTimeField(auto_now_add=True)
    created_by = models.ForeignKey(User)

    @property
    def activity_object_attr(self):
        return self
    @property
    def activity_actor_attr(self):
        return self.assigned_to
    @property
    def activity_notify(self):
        return [feed_manager.get_notification_feed(self.assigned_to.id),]

如果我的观点抓取用户Feed:

enricher = Enrich()
feed = feed_manager.get_user_feed(request.user.id)
# feed = feed_manager.get_notification_feed(request.user.id)
activities = feed.get(limit=25)['results']
enriched_activities = enricher.enrich_activities(activities)

我的输出按预期工作,并且每个输出都填充了我的模板中的正确数据:

Actor: {{ activity.actor }}<br>
Title: {{ activity.title }}<br>
Time: {{ activity.time|timesince }}<br>

但是,如果我切换到通知Feed(请注意注释行外的更改):

enricher = Enrich()
# feed = feed_manager.get_user_feed(request.user.id)
feed = feed_manager.get_notification_feed(request.user.id)
activities = feed.get(limit=25)['results']
enriched_activities = enricher.enrich_activities(activities)

然后,我可以从activity.created_at得到数据的唯一字段。

activity.keys的输出显示以下内容:

[u'activities', u'group', u'activity_count', u'created_at', u'updated_at', u'actor_count', u'verb', u'is_seen', u'id', u'is_read']

似乎对于通知提要,演员和对象不会被报告回GetStream:

enter image description here

但是,它适用于用户Feed:

enter image description here

我很难过为什么。我错过了什么?

1 个答案:

答案 0 :(得分:6)

好的......所以我弄清楚了我的错误。我一直在假设notification_feed是平坦的饲料。哎呀,糟透了。它实际上是聚合的。因此,我能够修复如下:

而不是:

activities = enricher.enrich_activities(activities)

我用过:

enriched_activities = enricher.enrich_aggregated_activities(activities)

然后,在我的基本模板中:

{% for enriched_activity in enriched_activities %}
    {% render_activity enriched_activity %}
{% endfor %}

/activity/aggregated/task.html

中查看
{% for activity in enriched_activity.activities %}
    {% render_activity activity %}
{% endfor %}

最后在 /activity/task.html 里面,我看到了这些项目的预期输出。

Actor: {{ activity.actor.first_name }}<br>
Title: {{ activity.object.title }}<br>
Time: {{ activity.time|timesince }}<br>