我使用 django-activity-stream 模块来收集用户活动。但是当一个用户(user1)跟随另一个(user2)时。
我需要获取以下用户(user2)的活动流并结合按日期和时间排序的所有活动(参见下面的代码)。
而且随着活动列表的增长,我认为我将面临性能和优化问题。我相信有人已经解决了类似的问题。
关于如何使活动生成更有效的任何想法和建议?
def build_activity(raw_activity):
activity = []
for item in raw_activity:
action_object = get_action_object(item)
activity.append({
'user': User.objects.get(pk=int(item.actor_object_id)),
'verb': item.verb,
'action_object': action_object[1],
'type': action_object[0],
'timestamp': timesince(item.timestamp),
'datetime': item.timestamp,
})
return activity
def activity_stream(user):
from actstream.models import actor_stream
raw_activity = actor_stream(user)
activity = build_activity(raw_activity)
for following in Follow.objects.filter(user=user):
stream = actor_stream(following.target_user)
activity += build_activity(stream)
return sorted(activity, key=lambda item:item['datetime'], reverse=True)
谢谢,
苏丹