django-activity-stream动作未显示

时间:2013-09-28 13:46:44

标签: django django-models

我刚刚设置了django-activity-stream但是在我转到内置模板mysite.com/activity/时无法显示我的动作。然而,如果我检查管理站点,我可以看到操作已按预期保存。我正在使用django-allauth进行身份验证/授权

的myapp / Settings.py

ACTSTREAM_SETTINGS = {
    'MODELS': ('auth.user', 'auth.group'),
    'MANAGER': 'actstream.managers.ActionManager',
    'FETCH_RELATIONS': True,
    'USE_PREFETCH': True,
    'USE_JSONFIELD': True,
    'GFK_FETCH_DEPTH': 0,
}

的myapp / receivers.py

    from actstream import action
    @receiver(user_logged_in)
    def handle_user_logged_in(sender, **kwargs):
        request = kwargs.get("request")
        user = kwargs['user']
        action.send(user, verb='logged in')

在django-activity-stream views.py中,似乎models.user_stream(request.user)返回空。但我不明白为什么。

actstream / views.py

  @login_required
    def stream(request):
        """
        Index page for authenticated user's activity stream. (Eg: Your feed at
        github.com)
        """
        return render_to_response(('actstream/actor.html', 'activity/actor.html'), {
            'ctype': ContentType.objects.get_for_model(User),
            'actor': request.user, 'action_list': models.user_stream(request.user)
        }, context_instance=RequestContext(request))

models.userstream(request.user)进行调试似乎我发现它没有返回结果:

actstream / managers.py

 @stream
    def user(self, object, **kwargs):
        """
        Stream of most recent actions by objects that the passed User object is
        following.
        """
        q = Q()
        qs = self.filter(public=True)
        actors_by_content_type = defaultdict(lambda: [])
        others_by_content_type = defaultdict(lambda: [])

        follow_gfks = get_model('actstream', 'follow').objects.filter(
            user=object).values_list('content_type_id',
                                     'object_id', 'actor_only')

        if not follow_gfks:
            return qs.none()

当我检查q = self.filter处的值时,我实际上可以看到我通过的用户所有正确的“登录”活动,但是当它到达follow_gfks = get_model时因为有问题的用户不是跟随其他任何人follow_gfks最终成为无,并在最后一行删除查询集qs

为什么当我只是试图查看我自己的用户活动Feed时,这种方式是这样的,我不知道。

以下是我的actstream_action表中的一行:

id                              1
actor_content_type_id           [fk]3
actor_object_id                 2
verb                            logged in
description                     NULL
target_content_type_id          NULL
target_object_id                NULL
action_object_content_type_id   NULL    
action_object_object_id         NULL
timestamp                       2013-09-28 12:58:41.499694+00
public                          TRUE
data                            NULL

2 个答案:

答案 0 :(得分:1)

我设法通过将user传递给actor_stream()而不是user_stream()来获取当前登录用户的操作/活动列表。但我不知道为什么user_stream不能按预期工作

答案 1 :(得分:0)

如果您的用户想要显示操作,则需要将with_user_activity=True传递给user_stream;如果是另一个用户,则需要先关注它们。