0

我正在构建一个 BlogApp,但我遇到了一个问题

我想做什么

我正在尝试仅访问one user which i have opened the profile模板中的在线状态。但它显示了所有活跃用户。

我在做什么

online_users_activity用来知道哪个用户在线。我正在使用这个django_online_users

问题

它显示所有在线用户。

视图.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)

我不知道该怎么办。

任何帮助,将不胜感激。

4

1 回答 1

-1

您可以通过使用条件表达式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 %}
于 2021-03-14T17:06:08.240 回答