在 Django 模板中计算数据库中的 True 或 False(1 或 0)值

Posted

技术标签:

【中文标题】在 Django 模板中计算数据库中的 True 或 False(1 或 0)值【英文标题】:Count True or False (1 or 0) values from database in Django template 【发布时间】:2018-08-14 19:15:54 【问题描述】:

我正在尝试实现用户模板视图以显示有多少设备在线以及多少设备离线。对于那个实例,我将值存储在数据库列“状态”中,值为 1 和 0。

我无法弄清楚如何在 Django 环境中获取这些值并计算它们。我的意思是如果我有 4 个 True(1) 值,在模板中它应该看起来像:

您有 4 台在线设备

如果有 4 个 False(0) 值,反之亦然:

您有 4 台离线设备

有可能在 Django 中实现吗?我真的是这个领域的新手,非常感谢一些好的提示......

我的模型.py

class Device(models.Model):
    usr = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    ip = models.CharField(max_length=50)
    status = models.IntegerField(default=0)

【问题讨论】:

【参考方案1】:

例如,您可以在视图中执行此操作:

class MyView(View):

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        queryset = Device.objects.filter(usr=self.request.user)
        context['nb_online'] = queryset.filter(status=1).count()
        context['nb_offline'] = queryset.filter(status=0).count()
        return context

然后您可以在模板中访问 nb_online nb_offline

【讨论】:

让我开心!万分感谢。还有一个愚蠢的(我猜)问题,我应该如何渲染它?比如:return (request, 'index.html', context) ? 如果你使用基于类的视图(在大多数情况下你应该这样做),上下文会自动通过render_to_response()传递给模板 可以转成FBV吗?因为我所有的项目都是用函数编写的。现在我的设备应用程序views.py 看起来像: def Devices(request): return render(request, 'Devices/devices.html') 我怎样才能将这个类合并到这个视图中?提前谢谢! 好的,当然,只需将上下文传递给您的render() 函数,而不是使用get_context_data()。 docs.djangoproject.com/en/stable/topics/http/shortcuts/#render

以上是关于在 Django 模板中计算数据库中的 True 或 False(1 或 0)值的主要内容,如果未能解决你的问题,请参考以下文章

在mysql中计算数据并按周分组

在Python中计算数据框中最后一行和所有其他行之间的时间差

如何让 DOM 呈现对 VUE.js 项目中计算数据的更改

在 OpenGL 中计算法线矩阵

怎样在Excel中计算所有人的平均年龄??!

Django模板每次都返回True