我剛剛設置了django-activity-stream,但無法顯示我的操作時,我得到了內置模板mysite.com/activity/。但是,如果我查看管理網站,我可以看到這些操作已按預期保存。我使用的Django allauth認證/授權django-activity-stream操作不顯示
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的活動流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
在最後一行被刪除。
爲什麼這個工作方式,當我只是試圖查看我自己的用戶活動飼料我不知道。
下面是從我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