如何在 online_users 中仅过滤一个用户
How to filter only one user in online_users
我正在构建一个 BlogApp,但遇到了一个问题
我正在尝试做什么
我试图在模板中仅访问 one user which i have opened the profile
在线状态。但它显示了所有活跃用户。
我在做什么
我正在使用 online_users_activity
来了解哪个用户 online.I 我正在使用 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 %}
我正在构建一个 BlogApp,但遇到了一个问题
我正在尝试做什么
我试图在模板中仅访问 one user which i have opened the profile
在线状态。但它显示了所有活跃用户。
我在做什么
我正在使用 online_users_activity
来了解哪个用户 online.I 我正在使用 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 %}