如何在 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 %}