2015-12-30 108 views
3

我使用GetStream Django程序包與getstream.io進行交互。我已經使用Enricher()類來豐富我用了feed_manager.get_user_feed() Django的模型信息輸入活動取得了成功,但不能與feed_manager.get_notification_feed()GetStream(Django) - 無法提供豐富通知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),] 

如果我認爲抓住了用戶飼料:

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

但是,它是針對用戶飼料:

enter image description here

我很困惑,爲什麼。我錯過了什麼?

回答

5

好的...所以我想出了我的錯誤。我一直在假設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> 
+0

您應該將此標記爲正確答案;) –

+0

感謝您與社區分享! – Thierry

+0

@TommasoBarbugli系統我需要等待2天才能將自己的答案標記爲正確答案 –