首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GetStream (Django) -无法丰富通知源

GetStream (Django) -无法丰富通知源
EN

Stack Overflow用户
提问于 2015-12-30 07:48:35
回答 1查看 405关注 0票数 3

我正在使用GetStream Django包与getstream.io交互。我已经成功地使用Enricher()类丰富了feed_manager.get_user_feed()的Django模型信息的活动提要,但无法使用feed_manager.get_notification_feed()获得类似的结果。

这是我的模型的简写版本。

代码语言:javascript
复制
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),]

如果我的视图获取了用户提要:

代码语言:javascript
复制
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)

我的输出按预期工作,每个输出都使用模板中的适当数据填充:

代码语言:javascript
复制
Actor: {{ activity.actor }}<br>
Title: {{ activity.title }}<br>
Time: {{ activity.time|timesince }}<br>

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

代码语言:javascript
复制
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:

但是,它是针对用户提要的:

我搞不懂为什么。我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-30 08:52:18

好吧..。所以我想出了我的错误。我一直在假设notification_feed是一个扁平化的饲料。喔,很糟糕。它实际上是聚合的。因此,我能够按以下方式进行修正:

而不是:

代码语言:javascript
复制
activities = enricher.enrich_activities(activities)

我用:

代码语言:javascript
复制
enriched_activities = enricher.enrich_aggregated_activities(activities)

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

代码语言:javascript
复制
{% for enriched_activity in enriched_activities %}
    {% render_activity enriched_activity %}
{% endfor %}

它在/activity/aggregated/task.html中看起来

代码语言:javascript
复制
{% for activity in enriched_activity.activities %}
    {% render_activity activity %}
{% endfor %}

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

代码语言:javascript
复制
Actor: {{ activity.actor.first_name }}<br>
Title: {{ activity.object.title }}<br>
Time: {{ activity.time|timesince }}<br>
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34525206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档