ユーザーのアクティビティを収集するために 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)
ありがとう、
スルタン