问题描述
我想做什么
我正在尝试仅访问模板中的 one user which i have opened the profile
在线状态。但它显示了所有活跃用户。
我在做什么
我使用 online_users_activity
知道哪个用户在线。我使用 This django_online_users
问题
views.py
def online(request,user_id):
user_status = online_users.models.OnlineUserActivity.get_user_activities(timedelta(hours=87600))
users = (user for user in user_status)
context = {'users':users}
return render(request,'online.html',context)
我不知道该怎么办。
任何帮助将不胜感激。
解决方法
您可以通过使用 Conditional Expressions 检查 last_activity
是否大于某个计算时间来简单地注释用户是否在线:
from django.db.models import BooleanField,Case,Value,When
from django.shortcuts import get_object_or_404
from django.utils import timezone
def online(request,user_id):
min_time = timezone.now() - timedelta(hours=87600)
queryset = online_users.models.OnlineUserActivity.objects.filter(user_id=user_id).annotate(
is_online=Case(
When(last_activity__gte=min_time,then=Value(True)),default=Value(False),output_field=BooleanField(),)
)
online_user_activity = get_object_or_404(queryset)
context = {'online_user_activity': online_user_activity}
return render(request,'online.html',context)
现在,您正在检查其个人资料的用户将有一个带注释的字段 is_online
,因此您可以检查为:
{% if online_user_activity.is_online %}
Online
{% else %}
Offline
{% endif %}