You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django中统计设备在线/离线状态数量并在模板展示

当然可以实现啦!这在Django里操作起来很顺畅,我给你拆解成两步来做:

第一步:在视图中统计设备状态数量

假设你的设备模型叫做Device,status字段用1表示在线、0表示离线。我们可以用Django的ORM轻松完成统计,这里有两种常用方法:

高效一次性查询法(推荐)

这种方法只需要发起一次数据库查询,性能更优:

from django.db.models import Count, Q
from django.shortcuts import render
from .models import Device

def device_status_view(request):
    # 一次性统计在线、离线设备的数量
    status_stats = Device.objects.aggregate(
        online_count=Count('id', filter=Q(status=1)),
        offline_count=Count('id', filter=Q(status=0))
    )
    # 把统计结果传给模板
    return render(request, 'device_status.html', status_stats)

简洁分开查询法

如果觉得上面的写法有点绕,也可以分开两次查询,逻辑更直观:

from django.shortcuts import render
from .models import Device

def device_status_view(request):
    online_count = Device.objects.filter(status=1).count()
    offline_count = Device.objects.filter(status=0).count()
    # 打包数据传给模板
    context = {
        'online_count': online_count,
        'offline_count': offline_count
    }
    return render(request, 'device_status.html', context)
第二步:在模板中渲染统计结果

接下来创建对应的模板文件(比如templates/device_status.html),把统计好的数据展示出来:

<!DOCTYPE html>
<html>
<head>
    <title>设备状态统计</title>
</head>
<body>
    <h2>设备状态汇总</h2>
    <p>您有 <strong>{{ online_count }}</strong> 台在线设备</p>
    <p>您有 <strong>{{ offline_count }}</strong> 台离线设备</p>
</body>
</html>

如果想让文案更灵活(比如数量为0时给出提示),可以加个简单的条件判断:

<p>您有 {{ online_count }} 台在线设备{% if online_count == 0 %},目前暂无在线设备{% endif %}</p>
<p>您有 {{ offline_count }} 台离线设备{% if offline_count == 0 %},当前所有设备都处于在线状态{% endif %}</p>
额外小优化:让模型更易维护

建议给Device模型的status字段加上choices选项,这样代码可读性更高,也不容易写错状态值:

class Device(models.Model):
    # 定义状态常量
    STATUS_ONLINE = 1
    STATUS_OFFLINE = 0
    STATUS_CHOICES = [
        (STATUS_ONLINE, '在线'),
        (STATUS_OFFLINE, '离线'),
    ]
    status = models.IntegerField(choices=STATUS_CHOICES, default=STATUS_OFFLINE)
    # 其他字段...

之后查询时就可以用Device.STATUS_ONLINE代替1,比如Device.objects.filter(status=Device.STATUS_ONLINE).count(),代码更清晰。

内容的提问来源于stack exchange,提问作者LukeWalker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:49:02